Bash

使用“grep”來匹配文件中的 ID 列表以匹配另一個文件

  • September 29, 2021

我一直在使用論壇上建議的各種格式,例如:

grep -f file1.txt file2.txt > ouput.txt

file1.txt在一列中包含一個 ID 列表,例如:

15002345234 
15001234214

file2.txt包含製表符分隔的列,一列包含 ID,其他列包含其他資訊。

1500349850 1 3 father

我已經嘗試過 shell 循環awksed其他文章中建議的命令。但基本上我只得到一個 ID 的結果:

150982309750 1 2 2  4

它也總是相同的,而輸出中應該有很多結果,例如:

150982309750 1 2 2  4
150563524856 1 3 2  2
150864364612 2 1 2  2

任何想法我做錯了什麼?

我會

  • 添加-w僅匹配整個單詞的選項
  • 添加-F固定字元串(不是正則表達式)匹配的選項
  • 驗證 file1 沒有使用\r\n行尾——尾隨\r會導致匹配失敗。檢查這個head file1.txt | od -c
grep -wFf <(sed 's/\r$//' file1.txt) file2.txt

引用自:https://unix.stackexchange.com/questions/671122