Awk

awk/sed 過濾器範例,用於基於其他列中的數據進行列操作

  • February 16, 2022

我試圖找到一個範例,說明如果 col 2 和 col 5 中的數據不等於“null”,我可以如何有效地使用 sed 或 awk 來操作特定列(例如 col 1)中的 csv 數據。

未過濾的範例:

未填充,空值,數據,數據,空值,數據
未填充,**數據**,數據,數據,**數據**,數據
未填充,**數據**,數據,數據,空,數據
未填充,空值,數據,數據,空值,數據
未填充,空,數據,數據,**數據**,數據

會成為:

未填充,空值,數據,數據,空值,
**已填充**數據,**數據**,數據,數據,**數據**,數據
未填充,**數據**,數據,數據,空,數據
未填充,空值,數據,數據,空值,數據
未填充,空,數據,數據,**數據**,數據

預先感謝您的幫助!

awk 'BEGIN{ FS=OFS="," }
$2!="NULL" && $5!="NULL"{$1="POPULATED"}1' infile.csv

FS是輸入欄位分隔符, OFS是輸出欄位分隔符,我們在處理輸入文件之前在 BEGIN NING處設置逗號字元。

我們正在檢查這兩個列(column#2$2和column#5 $5)是否都不是NULL值)!="NULL",然後更新第一列值$1="POPULATED",然後在末尾使用idiom1,輸入行將輸出所有更改。

如果您的意思是 NULL 為空列,則只需與空字元串進行比較,如下所示:

awk 'BEGIN{ FS=OFS="," }
$2!="" && $5!=""{$1="POPULATED"}1' infile.csv

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