我有2个文件 file1包含我需要grep的模式列表 例如:
abc
bcd
def
file2包含文件名和绝对路径 例如:
/prod/users/abc/username/filename1.dat
/prod/users/abc/username/filename2.dat
/prod/users/abc/username/filename3.dat
我要grep
abc in /prod/users/abc/username/filename1.dat
bcd in /prod/users/abc/username/filename2.dat
def in /prod/users/abc/username/filename3.dat
任何人都可以使用UNIX代码帮助我。 以下不起作用
for i in `cat file2`
do
for j in `file1`
do
cat -n $i| grep $j >> file_final.txt
done
done
答案 0 :(得分:0)
你错过了<{p>中的cat
for j in `file1`
将其更改为
for j in `cat file1`
答案 1 :(得分:0)
嵌套循环使您看起来像是在尝试搜索每个文件上的每个模式。
也许你的意思是这样的:
#!/bin/bash
i=0
patterns=`cat file1`
values=(`cat file2`)
for pattern in ${patterns}
do
cat -n ${values[i]} | grep $pattern >> file_final.txt
((i++))
done
顺便说一下,grep提供-n
选项,因此您无需cat
输出文件;你可以在上面写一下:
grep $pattern -n ${values[i]} >> file_final.txt