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

使具有多个文件名的“sed”的单个实例跳到下一个文件,sed,Sed,sed中的next命令跳到下一行,但是对于多个文件,似乎没有任何命令可以跳到下一个文件。 是否存在仅使用单一调用sed的解决方法 问题的演示 制作两个简单的3号数据文件: seq 3 > three ; seq 10 1 13 > thirteen 显示sed处理多个文件(通过查找以3结尾的所有行并打印文件名),并且在某种程度上意识到它们是不同的对象: sed -n '/3$/{p;F}' three thirteen 输出: 3 three 13 thirteen 13

sed
中的
n
ext命令跳到下一行,但是对于多个文件,似乎没有任何命令可以跳到下一个文件。 是否存在仅使用单一调用
sed
的解决方法

问题的演示

制作两个简单的3号数据文件:

seq 3 > three ; seq 10 1 13 > thirteen
显示
sed
处理多个文件(通过查找以3结尾的所有行并打印文件名),并且在某种程度上意识到它们是不同的对象:

sed -n '/3$/{p;F}' three thirteen 
输出:

3
three
13
thirteen
13
但是,下一次打印最后两行的尝试不起作用,或者更确切地说,这两个文件都是一个流:

sed -n '$p' three thirteen 
输出:

3
three
13
thirteen
13

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

-s、 --分开

将文件视为独立的,而不是单个连续的长流

使用
-i
选项时,默认情况下,GNU
sed
使用
-s


如果
-s
选项不可用,这里有一个使用
perl
的替代选项:

$ perl -ne 'print if eof' three thirteen
3
13