0

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

sed -e '/模式/ {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 }'
4

1 回答 1

0

这两个命令的存在是为了服务于两个不同(虽然看起来相似)的目的。但是,在您的情况下,“n”是多余的。记起:

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

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

这份简报取自grymoire 网站您可以在此处阅读有关使用多行的更多信息。

于 2013-02-07T04:16:42.537 回答