中的n
ext命令sed
跳到下一行,但是对于多个文件,似乎没有任何命令可以跳到下一个文件。是否有仅使用一次调用的解决方法sed
?
问题演示...
制作两个简单的 3 数数据文件:
seq 3 > three ; seq 10 1 13 > thirteen
Run Code Online (Sandbox Code Playgroud)
显示sed
处理多个文件(通过查找所有以3结尾的行并打印文件名),并且在某种程度上将它们视为不同的对象:
sed -n '/3$/{p;F}' three thirteen
Run Code Online (Sandbox Code Playgroud)
输出:
3
three
13
thirteen
Run Code Online (Sandbox Code Playgroud)
然而,下一次打印最后一行的尝试不起作用,或者更确切地说,它就像两个文件都是单个流一样工作:
sed -n '$p' three thirteen
Run Code Online (Sandbox Code Playgroud)
输出:
13
Run Code Online (Sandbox Code Playgroud)
查看您的版本是否支持该-s
选项:
$ seq 3 > three ; seq 10 1 13 > thirteen
$ sed -n '$p' three thirteen
13
$ sed -n '2p' three thirteen
2
$ sed -sn '$p' three thirteen
3
13
$ sed -sn '2p' three thirteen
2
11
Run Code Online (Sandbox Code Playgroud)
从man sed
:
-s, --分开
将文件视为单独的而不是单个连续的长流。
使用该-i
选项时,GNU 默认sed
使用。-s
如果该-s
选项不可用,可以使用以下替代方法perl
:
$ perl -ne 'print if eof' three thirteen
3
13
Run Code Online (Sandbox Code Playgroud)