Awk

使用 GREP/AWK/CUT 在特定列上搜尋字元串

  • June 28, 2019

請修改我的腳本,因為我想在 File.csv 的第 1,3 和 4 列中搜尋單詞“dBm”並返回所有不匹配的行/記錄,因為需要在文件中刪除“dBm”。

cat File.csv | grep -v dBm | sort -u -t '|' -k 1,1 -k 3,4 > Result.csv

Sample File.csv
RefNum|Date|Info|LTC|ICD|MLBB
ABC123|010119|19 dBm||Milk|MII9
DEF456|010119|21|-5 dBm|Choco|KK20
GHI789|010219|||C2|AA30
JKL111|010219|54|17||SK10

Sample Result.csv
RefNum|Date|Info|LTC|ICD|MLBB
GHI789|010219|||C2|AA30
JKL111|010219|54|17||SK10

急需你的幫助!乾杯。

用於將awk不包含字元串的行提取為第dBm1、3 或 4 列中的子字元串:

awk -F '|' '!($1 ~ /dBm/ || $3 ~ /dBm/ || $4 ~ /dBm/)' file

給定您的第一條數據,這將輸出

RefNum|Date|Info|LTC|ICD|MLBB
GHI789|010219|||C2|AA30
JKL111|010219|54|17||SK10

awk程序匹配三列中的dBm每一列,如果沒有匹配任何一列,則輸出原始行。

$ awk -F'|' '($1 FS $3 FS $4) !~ /dBm/' file
RefNum|Date|Info|LTC|ICD|MLBB
GHI789|010219|||C2|AA30
JKL111|010219|54|17||SK10

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