合并文件和前置文件名和目录

时间:2016-11-16 19:03:49

标签: linux merge grep

我需要合并目录中的文件,并在输出的每一行中包含目录,文件名和行号。我发现了许多有用的帖子,包括文件名和行号,但不包括目录名。 Grep -n获取行号,我看到一些查找命令可以获得其他部分,但我似乎无法将它们全部拉到一起。 (我正在使用Ubuntu进行所有数据处理。)

想象一下目录中名为“8”的两个文件。 (我拥有的数据中的每个目录都是一个数字。数据以这种方式提供。)

file1.txt

  

约翰·保罗
乔治
林戈

file2.txt

  

米克

克普比尔
布赖恩
查理

输出应如下所示:

  

8:FILE1.TXT:1:约翰
8:FILE1.TXT:2:保
8:FILE1.TXT:3:乔治
8:FILE1.TXT:4:林檎
8:FILE2.TXT:1:米克
8:FILE2.TXT:2:
克普8:FILE2.TXT:3:比尔
8:FILE2.TXT: 4:布莱恩
8:FILE2.TXT:5:查理

分隔符不一定是冒号。标签可以正常工作。

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果只有一个目录级别,你可以尝试这样的事情。我们进入每个目录,用它的编号打印每一行,然后用sed将目录名称附加到前面:

$ for x in `ls`; do
   (cd $x  ; grep -n . *) | sed -e 's/^/'$x:'/g'
 done

1:c.txt:2:B
1:c.txt:3:C
2:a.txt:1:A
2:a.txt:2:B