使具有多个文件名的“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
选项时,默认情况下,GNUsed
使用-s
如果
-s
选项不可用,这里有一个使用perl
的替代选项:
$ perl -ne 'print if eof' three thirteen
3
13