Linux AWK 欄位空白就移除此行

下述欄位使用 Tab 分隔:(ID=2 的 Title 那欄位是空的)

ID Title Content
1 AAA C-AAA
2 C-BBB
3 CCC C-CCC

上述若某個欄位為空,就要移除那整列,要怎麼做呢?

Linux AWK 欄位空白就移除此行

AWK NF 可以算欄位總數

  • NF:The variable NF is set to the total number of fields in the input record.

上述檔案欄位有三個,所以不滿三個欄位的就整行移除

  • awk 'NF==3' filename > filter_filename # 印出欄位資料為3的,在導去想要的檔案即可
  • awk 'NF>2' filename > filter_filename # 欄位數量超過2的才印出來

另外一種直接看 最後一欄 的變數,若那個變數為空,一樣就不要印出來

  • awk '!($3 == "")' filename > filter_name

若要將某個欄位(列)移除

  • cat filename | awk '$NF="";{print $0}' # 將 最後一欄 的資料移除
  • cat filename | awk '$3="";{print $0}' # 將 第3列 的資料移除
  • cat filename | awk '$1=$3="";{print $0}' # 將 第1,3列 的資料移除
  • cat filename | awk '{$(NF-1)=$NF="";print $0}' # 將最後兩列的資料移除

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料