下述欄位使用 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}' # 將最後兩列的資料移除