2015-09-23 101 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打印所有在第一文件中的行,但不是我第二個文件。這使用進程替換將兩個命令的輸出視爲文件。

相關問題