当 sed
以 1 行地址(第 1 行)及其上的替换执行时,示例:
$ sed -n '1s/foo/bar/p' <<EOF
foo will be replaced, this is line 1
are these lines still processed?
Hard to check.
EOF
sed 是继续读取/解析文件的剩余部分还是在指定地址后退出?我在一个非常快的系统上,计时似乎确实停止了,但没有给出 q
命令,我想确认一下。
最佳答案
不,它绝对不会在我的 sed
版本(GNU sed 版本 4.2.1)上停止。
我通过运行 yes
几秒钟然后按 Ctrl-C 创建了一个包含多行的文件 (203118592):
$ yes > file
这会创建一个巨大的文件,其中包含一堆带有“y”的行。然后我运行了您的 sed
命令以将“y”替换为“n”(而不是将“foo”替换为“bar”),这花了相当长的时间:
$ wc -l file
203118592 file
$ time sed -n '1s/y/n/p' file
n
real 0m9.335s
user 0m9.237s
sys 0m0.068s
您只是没有创建足够大的文件来查看效果。 :)
此外,仅供引用,如果我使用 q
,它会按预期退出:
$ time sed -n '1s/y/n/p ;q' file
n
real 0m0.002s
user 0m0.000s
sys 0m0.000s
关于unix - sed -n '1s/pattern/substitute/p' 是解析整个文件还是在第 1 行后退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9790895/