2017-08-21 36 views
0

我與波紋管格式02文本文件的副本ID:如何篩選出02檔

  • 文件1:

    2017-08-16 00:00:00,115 - [INFO] TRANSACTIONS: 123456788 id: 123456 
    2017-08-16 00:00:00,115 - [INFO] TRANSACTIONS: 123456789 id: 123457 
    
  • 文件2:

    123456 123457 123458 123459

的目標:我想獲得file1中的記錄沒有ID file2中

的命令行,結果我想:

  • 第一個命令行:grep -vf file2 file1
  • 第二命令行:comm -23 <(sort file1) <(sort file2)

這兩個命令都有效,但是e是file1中的300萬條記錄和file2中的1百萬條記錄。如果沒有太多記錄但是無法完成300萬條記錄,則可以完成第一條命令。第二個命令比第一個命令快,當我在ssh控制檯手動執行時,它可以完成,但它不適用於bash腳本。該錯誤已與以「語法錯誤‘(’顯示

任何想法來解決這個問題並完成目標

+0

參見:找到一個文件不在其他線路的快速方法是什麼?(https://stackoverflow.com/q/18204904/3776858) – Cyrus

+1

的[尋找線的快速方式可能的複製在另一個文件中?](https://stackoverflow.c om/questions/18204904 /快速查找線路中的文件不在另一個文件中) – Cyrus

回答

-1

我發現,使其在腳本的工作與第二個命令的方式:

sort file1 > file1.txt 
sort file2 > file2.txt 
comm -23 file1.txt file2.txt > result.txt 
+0

這不會做你所要求的,它只會打印所有的來自file1的行。 –

0
awk 'NR==FNR{a[$1];next} !($NF in a)' file2 file1 
+1

只是爲了讓你知道,「這個答案被標記爲低質量,因爲它的長度和內容。」我點擊了「看起來確定」,但誰知道... – gboffi

+0

是的,我希望它會作爲工具,做旗的標誌tirival答案沒有解釋,但沒有標記複雜的答案沒有解釋,我只是沒有有興趣在瑣碎的答案中添加一些解釋性文字。謝謝你的擡頭並標記出來。 –