2015-09-23 72 views
0

我有一个包含200个学生姓名的文件。另一个包含200名学生数据的大文件。我想确保没有一个学生的名字被遗漏。我正在寻找一个脚本,查看来自students.txt的字符串,然后在alldata.txt中搜索它。如果它丢失,列出它在另一个文件中搜索多个字符串(来自文件)并列出缺失的字符串

我尝试使用

find /tmp/alldata.txt -type f -exec grep -iHFf students.txt {} + 

但它列出了所有的比赛,错过提供字符串列表,它没有在alldata.txt找到

+0

提取所有学生的名字从第二个文件。对两个文件排序。然后使用'comm'命令查找第一个文件中第二个文件中缺失的所有行。 – Barmar

回答

0

如果您只是搜索一个文件,则不需要find。但是,如果你的数据文件是非结构化的文本和名字可以出现在任何地方,你可能需要找他们一次一个:

while read name; do 
    fgrep -q $name alldata.txt || echo $name 
done < students.txt 
+0

谢谢你,工作就像一个魅力! – Rabh

0

假设学生的名字都在alldata.txt第一场:

comm -23 <(sort students.txt) <(awk '{print $1}' alldata.txt | sort -u) 

comm -23打印所有在第一文件中的行,但不是我第二个文件。这使用进程替换将两个命令的输出视为文件。

相关问题