中的next命令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)