bash sed with / ^ $ / d; G命令

时间:2014-02-28 07:06:39

标签: linux bash sed

我有关于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

1 个答案:

答案 0 :(得分:3)

这是因为d立即结束该行的处理,没有(默认)打印在脚本结束时。如果您想跳过脚本的其余部分但仍然执行脚本结束操作,请改用b。默认的b牧场目标是脚本结束。