Shell脚本逐行读取2个文件并将公共行写入另一个文件

时间:2015-05-29 09:42:35

标签: shell unix

file1.csv - 带有以下格式超过10万行的手机号码列表;

447421475159,
447421475160,
447421475161,
447421475162,
447421475157,
447421475158,
447421475154,
447421475155,
447421475452,
447421475209,

file2.csv:携带大约1900个手机号码,格式与上述相同。

我需要交叉检查两个文件之间的公共行并将其放在第3个文件中。

3 个答案:

答案 0 :(得分:1)

使用unix命令comm,它在两个已排序的文件中查找公共行。由于您的文件未排序(从您的帖子判断),您还应该使用sort命令。总之,使用:

comm -12 <( sort file1.csv ) <( sort file2.csv ) > outputFile

答案 1 :(得分:0)

此脚本

for i in `cat file2.csv`; do j=`grep $i file1.csv | wc -l`; if [[ $j -gt 0 ]]; then echo $i >> output.csv; fi; done

将逐行从file2.csv获取所有数字,并将其与file1.csv进行比较。如果file2.csv中的number至少在file1.csv中找到一次,它将在output.csv中写入。

答案 2 :(得分:-1)

试试这个

cat file1.csv | grep -f file2.csv

这将打印2个文件之间共有的所有手机号码

抱歉忘记添加-f选项