当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
命令,想要确定。
答案 0 :(得分:4)
不,它绝对不会停留在我的sed
版本(GNU sed版本4.2.1)上。
我创建了一个包含多行(203118592)的文件,运行yes
几秒钟然后点击 Ctrl-C :
$ yes > file
这会创建一个包含“y”的大量行的巨大文件。然后我运行你的sed
命令用“n”代替“y”(用“bar”代替“foo”),花了很长时间:
$ 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