List 在2个列表文件上使用grep
我有两个文件 文件1包含我需要grep的模式列表 例如: file2包含文件名和绝对路径 例如: 我得走了List 在2个列表文件上使用grep,list,file,design-patterns,grep,List,File,Design Patterns,Grep,我有两个文件 文件1包含我需要grep的模式列表 例如: file2包含文件名和绝对路径 例如: 我得走了 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 fo
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
您在中缺少一个
cat
for j in `file1`
换成
for j in `cat file1`
嵌套循环使它看起来像是在搜索每个文件上的每个模式 也许你的意思更像这样:
#!/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
避免使用旧的和不推荐使用的back tics,请使用以下括号:
表示$(cat file2)中的i
#!/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 $pattern -n ${values[i]} >> file_final.txt