UNIX 文字工具: 抽出任意列

前一節我們費了好大的工夫,使得可以抽印文字檔案中的任意一列。 如果應用一個更強的工具 awk,就會事半功倍。 awk 是個具有一般用途的解讀型程式語言。 它的詳細說明,將有專文介紹,此處只例舉一二。 如果要印出 forty.txt 的第 7 列,只要說

awk 'NR==7' forty.txt
就行了。您可以把 7 換成任意一個正整數。如果 forty.txt 沒有那麼多列, 就不會印出結果。例如您可以試試看
awk 'NR==107' forty.txt

如果我們要將 forty.txt 從第 17 列到第 24 列都印出來, 可以說

head -24 forty.txt | tail -8
也可以換個說法:
awk 'NR==17, NR==24' forty.txt

如果我們只要抽印 forty.txt 的第 3 列、第 15 列和第 17 列,可以說

awk 'NR==3 || NR==15 || NR==17' forty.txt
其中 || 就是「或」的意思。

awk 還可以接受 stdin 輸入。所以我們可以說

head -20 forty.txt | awk 'NR==3 || NR==15 || NR==17'
如果 forty.txt 有很多列的話 (譬如說,十萬列), 後面這個指令比前面那個指令更有效率一些。

習題

[ 前一節 ]‧[ 後一節 ]‧[ 回目錄 ]



注意:此處所有文件均為原著,個別的版權宣告日後會一一公布, 整體版面設計亦尚未完成。但仍請勿抄襲文字與圖片,以免觸犯著作權法。

Created: Nov 19, 2000
Last Revised: Nov 19, 2000
© Copyright 2000 Wei-Chang Shann 單維彰

shann@math.ncu.edu.tw