awk 輸出前 N 列的最簡單方法


最近遇到一種場景,需要輸出一個文本信息的前 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

參考資料

  1. How to print first 'n' columns?
  2. Use awk to print the last N columns of a file or a pipe


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM