Text-Processing

從管道分隔文件中獲取值到 Linux 中的普通文本文件

  • May 22, 2022

我有一個管道分隔文件

查找.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

變數NRFNR分別保存總體讀取的行數和從目前文件讀取的行數。如果這些變數的值相同,我們將從第一個文件中讀取。

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