sed -e'/ pattern / {d; n}'

时间:2013-02-07 03:52:26

标签: sed

sed -e'/ pattern / {d; n}'

sed -e'/ pattern / {d}'

这两个命令在Linux上是否相同? 将n放在最后是否有意义?

从“man sed”,我得到了:

  

n N读取/附加下一行输入到模式空间。

实际上,我读过这一行(u-boot helper.mk):

sed -n -e '/.*\.u_boot_list[^ ]\+/ ! {d;n}' \
      -e 's/.*\(\.u_boot_list[^ ]\+\).*$$$$/\1/' \
      -e 's/\.[^\.]\+$$$$//' \
      -e ':s /^.\+$$$$/ { p;s/^\(.*\)\.[^\.]*$$$$/\1/;b s }'

1 个答案:

答案 0 :(得分:0)

存在两个命令以提供两种不同的(虽然看似相似)目的。但是,在您的情况下,“n”是多余的。召回:

“n”命令将打印出当前模式空间(除非使用“-n”标志),清空当前模式空间,并读入下一行输入。

“d”命令删除当前模式空间,读取下一行,将新行放入模式空间,并中止当前命令,并在第一个sed命令处开始执行。这称为开始一个新的“循环”。

本摘要摘自the grymoire site。您可以阅读有关使用多行here的更多信息。