Text-Processing
如何從多個文件中找到共同的數字?
我想提取所有文件中存在的公共數字。我在文件夾中有 1000 個文件。我想比較所有文件號並找出 1000 個文件中的通用號。我使用了以下程式碼:
for ((i=2;i<=10000;i++)) do comm -12 --nocheck-order a.txt "$i".txt > final.txt mv final.txt file.txt done
但它只是過度寫入和比較最後一個文件與 a.txt。但我希望所有文件中都存在通用數字。
假設一個 .txt 文件:
1
3
47
8
6
7
1.txt 文件:
2
3
6
7
8
2.txt文件:
3
5
6
7
9
3.txt 和 4.txt….1000.txt。如果這適用於這 3 個文件,它應該適用於所有文件。在這個文件中很常見的是:
3
7
當它給我的時候
3
8
3
請讓我知道我該如何進行?
假設每個數字在文件中只能出現一次:
$ awk '{c[$1]++} END{for (i in c) if (c[i] == (ARGC-1)) print i}' a.txt {1..2}.txt 3 6 7
comm
僅適用於已排序的文件,逐行比較已排序的文件 FILE1 和 FILE2。
來源:https ://linux.die.net/man/1/comm
因此該算法不適用於未排序的文件。這有效:
#!/bin/sh sort -n a.txt > tmp.txt END=4 for i in `seq 2 $END` do comm -12 --nocheck-order tmp.txt $i.txt |tee tmp.txt done cp tmp.txt "final.txt"
|tee
您還可以在某些系統上使用運算符代替>
(寫入文件並覆蓋它)