最近遇到一種場景,需要輸出一個文本信息的前 N 列。 眾所周知 可以指定分隔符並指定列的範圍,如 就是以空格為分隔符輸出前 4 列。但是 的分隔符只能是一個字元,遠沒有 好用。 簡單搜索了下網上各種資料都沒有關於 awk 輸出前 N 列的簡單方法,見得最多的還是用一個 for 迴圈輸出[1][2]: ...
最近遇到一種場景,需要輸出一個文本信息的前 N 列。
眾所周知 cut
可以指定分隔符並指定列的範圍,如 cut -d' ' -f-4
就是以空格為分隔符輸出前 4 列。但是 cut
的分隔符只能是一個字元,遠沒有 awk
好用。
簡單搜索了下網上各種資料都沒有關於 awk 輸出前 N 列的簡單方法,見得最多的還是用一個 for 迴圈輸出[1][2]:
$ awk '{ for(i=1; i<=2; i++) {print $i} }'
這裡分享一個修改 NF 標記輸出的方法:
$ awk '{NF=4}1'
這樣就是輸出前 4 列了,示例:
$ dpkg -l | grep ^ii | head -n 3 | awk '{NF=4}1'
ii accountsservice 0.6.45-1ubuntu1 amd64
ii acl 2.2.52-3build1 amd64
ii acpid 1:2.0.28-1ubuntu1 amd64