Text-Processing
從管道分隔文件中獲取值到 Linux 中的普通文本文件
我有一個管道分隔文件
查找.txt:
Column1|yellow|value|628291 Column9|red|value|346801
文件.txt:
Yellow YellowDiamond Redgold
我試圖讓 File.txt 中的Yellow值與管道分隔文件 Ie Lookup.txt 的完全匹配。輸出應該是整行,如下所示。File.txt 文件具有要在文件 Lookup.txt 中搜尋的值
我嘗試了
awk
,fgrep
命令,但它們給了我不同的值;預期的輸出是:Column1|yellow|value|628291
grep
你的方法不起作用的任何原因?grep -Fwif File.txt Lookup.txt
看起來很有希望…?
將字元串
File.txt
作為鍵儲存在awk
. 對於不區分大小寫的比較,將鍵折疊為,例如,小寫。在讀取第二個文件 時
Lookup.txt
,測試第二個欄位的小寫值是否是關聯數組中的鍵。如果是,則列印整行。awk -F '|' 'NR == FNR { key[tolower($0)]; next } (tolower($2) in key)' File.txt Lookup.txt
變數
NR
和FNR
分別保存總體讀取的行數和從目前文件讀取的行數。如果這些變數的值相同,我們將從第一個文件中讀取。