Unix sed-n';1s/图案/替代品/p';解析整个文件还是在第1行之后退出?

Unix sed-n';1s/图案/替代品/p';解析整个文件还是在第1行之后退出?,unix,sed,Unix,Sed,当执行sed时,使用一行地址(第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-n'1s/foo/bar/p'不,它肯定不会在我的sed版本(GNU-sed版本4.2.1)上停止 我创建了一个包含许多行的文件(203118592),方法是运行yes几秒钟,然后按

当执行
sed
时,使用一行地址(第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-n'1s/foo/bar/p'不,它肯定不会在我的
sed版本(GNU-sed版本4.2.1)上停止

我创建了一个包含许多行的文件(203118592),方法是运行
yes
几秒钟,然后按Ctrl-C:

这会创建一个包含一大堆带有“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

q
命令打印模式空间中的任何内容,然后退出程序,因此您可以编写:
sed'1s/foo/bar/;q'
。在GNU sed中,
Q
退出程序而不打印模式空间,
Q
Q
都可以有退出代码(默认值为0),例如
q1
Q255
$ time sed -n '1s/y/n/p ;q' file
n

real    0m0.002s
user    0m0.000s
sys     0m0.000s