使用Sed提取多个文件中的标题

时间:2017-07-13 13:21:46

标签: linux bash shell sed

我使用head -3从我需要显示标题数据的某些文件中提取标题我执行了此操作:

head -3 file1 file2 file3 

head -3 *也有效。

我认为sed 3 file1 file2 file3会起作用,但它只提供第一个文件的输出,而不是其他输出。然后我尝试了sed -n '1,2p' file1 file2 file3。同样只有第一个文件产生任何输出。我也尝试使用通配符sed -n '1,2p' filename*只得到第一个文件的输出结果。

我读到的所有内容似乎都应该有效。 sed *filesnames*

提前致谢

1 个答案:

答案 0 :(得分:3)

假设GNU sed被标记为linux。来自GNU sed manual

  

-s   --separate默认情况下,sed会将命令行中指定的文件视为单个连续长流。这个GNU sed   扩展允许用户将它们视为单独的文件:范围   地址(例如'/ abc /,/ def /')不允许跨越几个   文件,行号相对于每个文件的开头,$ refer   到每个文件的最后一行,以及从R命令调用的文件   在每个文件的开头重新编写。

示例:

$ cat file1
foo
bar
$ cat file2
123
456

$ sed -n '1p' file1 file2
foo
$ sed -n '3p' file1 file2
123
$ sed -sn '1p' file1 file2
foo
123


使用-i时,隐含-s选项

$ sed -i '1chello' file1 file2
$ cat file1
hello
bar
$ cat file2
hello
456