我无法在bash中找到解决此问题的简便方法。
我有几个文件: aaa.txt / bbb.txt / ccc.txt
每个文件的内容是:
aaa.txt
1234
1234
1234
bbb.txt
5678
5678
5678
ccc.txt
10
20
30
40
我需要使用循环将文件名添加到每一行的开头。
大约有300个文件,我想将它们全部合并在一个文件中以执行grep,而不是逐文件查找文件,添加文件名的原因是执行该grep。结果应该是:
aaa.txt
aaa: 1234
aaa: 1234
aaa: 1234
bbb.txt
bbb: 5678
bbb: 5678
bbb: 5678
ccc.txt
ccc: 10
ccc: 20
ccc: 30
ccc: 40
你能帮我吗?
如果有任何疑问,只要求
谢谢!
答案 0 :(得分:0)
使用-H
选项,该选项为搜索到的每一行添加文件名前缀。 ^
匹配每一行的开头:
grep -H ^ *.txt > bigfile.txt
请注意,这样做:
grep -H ^ *.txt > bigfile.txt
grep searchstring bigfile.txt
...可以简化为:
grep -H searchstring *.txt
...效率大约是它的两倍。
答案 1 :(得分:0)
是的,agc所说的是可行的:
cd / some / path / && grep -H ^ * .txt> /some/path/bigfile.txt
谢谢大家!