2015-05-29 57 views
-3

file1.csv - 攜帶超過10萬行以下格式的移動號碼列表;Shell腳本逐行讀取2個文件並將公共行寫入另一個文件

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

file2.csv:攜帶1900個手機號碼,格式與上面相同。

我需要交叉檢查兩個文件之間的通用行並將其放入第三個文件中。

+1

看來你忘了在你的問題中包含一個問題。 – Biffen

+0

看到'comm'命令 – vefthym

回答

-1

試試這個

貓file1.csv | grep的-f file2.csv

這將打印2個文件

之間的共同所有的手機號碼,對不起忘了加上-f選項

+0

你有沒有試過這個?在我看來你的腳本會嘗試在file1.csv中查找file2.csv模式,而不是file2.csv的內容 – vlp

1

使用unix命令comm,它在兩個排序文件中查找公共行。由於你的文件沒有排序(根據你的文章判斷),你也應該使用sort命令。總之,使用方法:

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

如果在該文件中沒有uniq數字,那麼在輸出結果不會有用的情況下該怎麼辦 – vlp

+0

@vlp that was was對我之前的回答有一個很好的評論,但它也是錯誤的,因爲'uniq'假定了一個排序後的輸入。我發現'comm'更適合OP的需求。 – vefthym

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中的數字至少位於file1.csv中,它將寫入output.csv中。

相關問題