筆記:awk
- 處理文字檔案的命令檔語言
- 將檔案中的每一行視為個別的記錄,一行中的每一個項目則是個別的欄位。
- 對每一行都會套用一個「樣式{動作}」,如果符合樣式,就執行指定的動作。如果沒有樣式,表示對每一行都執行該項動作;如果沒有動作,表示要顯示符合樣式的行。
- 經典的方式是以 /etc/passwd 來作說明,列出 UID 與用戶名稱
$ awk -F":" '{ print $3 " " $1 }' /etc/passwd- -F 用來定義欄位分隔字元,預設是 tab 或空白
- $0 代表整行,$3 是第三個欄位 UID,$1 是第一個欄位用戶名稱
- 搜尋文字,顯示區塊 (grep 難以作到)
- 語法:awk '/開始樣式/,/結束樣式/'
- 從完整 lspci 輸出中找出特定設備
$ lspci -v | awk '/VGA/,/^$/'
- /^$/ 會找出文字區塊間的空白行
- 截取不重複記錄並儲存在新的檔案中
$ awk '!x[$0]++' filewithdupes > newfile
- 要對正規表示式有不錯的理解,作者推薦 Mastering Regular Expressions 這本書
沒有留言:
張貼留言