1
我有一个问题有关的sed:
在file.txt的假设的东西是这样的:
one
two
three
然后我运行:
sed '/^$/d;G' file.txt
我认为这个过程应该是这样的:
for line in file {
pattern_space = line
if (pattern_space == "\n") then pattern_space = ""
pattern_space = pattern_space + "\n" + hold_space
print pattern_space
}
话,我想结果应该是这样的:(空白行不动,非空白线后跟行)
one
two
three
但是,现实的情况是:
one
two
three
我仿佛运行的sed '/^$/d' file.txt的| sed G,我对此感到困惑。
你能告诉我什么是正确的过程吗?有什么我误解?
/BR
阮
嗨,@jthill,我想问一点点,请。从手册中说,“n N读/将下一行输入添加到模式空间中”,当我使用** n **时,为什么模式空间中的原始内容被打印出来?例如“sed'n; d'file.txt”,这个命令只是切断了偶数行。我认为应该没有什么输出,因为**阅读下一行到**。 pattern_space中的原始东西应该消失,但它不是 – ruanhao
我不知道你在哪里得到该手册,[真正的](http://www.gnu.org/software/sed/manual/sed。 html)说---'n' 如果自动打印未禁用,则打印模式空间,然后,无论如何,用下一行输入替换模式空间。如果没有更多输入,则sed退出而不处理任何更多的命令 – jthill
谢谢@jthill,你是对的 – ruanhao