当 Linux 命令获取多个文件作为输入时。是否有任何命令/技巧可以将命令分成stdout
几个部分。每个文件一个?那么,哪些行属于哪个文件就变得一目了然了?
例如,当cat
、grep
、sed
、sort
、 、等命令tail
获取多个文件作为输入时。一般来说,他们在 上连续打印结果stdout
,但我想将结果分成几部分。每个输入文件一个
我不想将结果分割成文件,或者按照中要求的行数分割它这个问题。我发现最接近它的是使用find -print -exec command
它所解释的这里。但仍然不是我想要的。
假设我的命令适用于file1
、file2
和file3
, 作为输入,并打印以下内容:
line1 of file1
line2 of file1
line3 of file1
line1 of file2
line2 of file2
line3 of file2
line1 of file3
line2 of file3
line3 of file3
我希望输出的格式类似于以下内容,因此当我观察到我在文件中查找的内容时,我可以跳转到下一个文件:
>>> file1 <<<
line1 of file1
line2 of file1
line3 of file1
----------------
>>> file2 <<<
line1 of file2
line2 of file2
line3 of file2
----------------
>>> file3 <<<
line1 of file3
line2 of file3
line3 of file3
提前致谢。
答案1
如果您除了按文件排序之外不关心行的顺序,则可以使用排序来完成此操作,方法是在每行前面加上 id 例如。
file1: line1
file2: line1
file1: line2
然后你可以通过排序管道结果:
$ ( process-file1 & process-file2 & ); wait | sort
file1: line1
file1: line2
file2: line1
当然,您也可以使用这种方法添加行号 - 然后只需使用“sort -n”。
要将其处理为您想要的确切格式,您可以使用 awk 构建一个脚本来剥离前面的部分并将其转换为标题。