Awk

需要從與 CSV 文件中的兩個變數匹配的特定行的第 12 列列印值

  • October 4, 2017

考慮以下兩個變數

DC="777777"
CountryCode="IN"

有一個 CSV 文件,fileSB.csv. 我找到了一個命令(如下)來搜尋DC第 2 列中的CountryCode變數名和第 4 列中的變數名。僅當兩個變數在同一行中匹配時,才會列印該特定行。

現在我的要求是在使用以下命令檢測到的同一行/行中,我只想列印第 12 列中存在的值。這裡的問題是第 12 列中可以有任意數量的逗號,因此無法在第 12 列中列印值

列印與文件名中的兩個變數值匹配的行的命令fileSB.csv

awk -v pat1="$DC" -v pat2="$CountryCode" -F, '($2==pat1&&$4==pat2)' fileSB.csv

摘要:需要從 的逗號分隔輸出中獲取第 12 列awk,其中可能包含任意數量的逗號,然後是另外 10 列。

根據下面的評論,第 12 列包含可變數量的逗號分隔項,然後是 10 列。

awk -v pat1="$DC" -v pat2="$CountryCode" -F, '$2 == pat1 && $4 == pat2' fileSB.csv |
cut -d, -f 12- | rev | cut -d, -f 11- | rev

cutand呼叫將rev首先刪除前 11 列,然後反轉數據並刪除最後 10 列(現在是反轉後的前 10 列),然後再次反轉。

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