使用mac bash比较两个文件的重复字符串

时间:2014-07-07 21:43:46

标签: macos bash loops while-loop

我正在尝试浏览两个.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顶部的数字匹配最好,列表中的数字越远,就越有可能错过它。

我有什么遗漏或更好的方法吗?

1 个答案:

答案 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