使具有多个文件名的“sed”的单个实例跳到下一个文件

agc*_*agc 5 sed

中的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)

Sun*_*eep 4

查看您的版本是否支持该-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)