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