我正在尝试浏览两个.txt文件来查找匹配项,并且只打印唯一的行。我有一个数字和名称列表以及仅有部分数字的第二个列表。
文件格式如下 5553239090,蝙蝠侠
第二个文件只有六个数字
555323
我想确保我只取出与前六个数字相匹配的行,所以如果我有239090,我就不希望它取出该行。到目前为止,我发现有效的是这个
while read line
do
echo $line
while read line2
do
if [[ "${line:0:6}" != "$line2" ]]; then
echo $line >> uniqueList2.txt
echo ${line:0:6}
fi
done < file2.txt
done < file1.txt
由于某种原因虽然它没有取出所有的比赛只有一些。看起来它与file2顶部的数字匹配最好,列表中的数字越远,就越有可能错过它。
我有什么遗漏或更好的方法吗?
答案 0 :(得分:1)
您可以像这样使用awk
:
awk 'FNR==NR {a[$1];next} {for (i in a) if (index($0, i)==1) print}' file2 file1
或者您可以使用此grep
grep -f <(sed 's/^/\^/' file1) file2