簡介
awk 是一個基於命令列的文字處理器。基本用法如下。
1
| awk '{[pattern] action}' {filenames}
|
使用
假設有一個 employee.txt
檔如下。
1 2 3 4 5 6 7 8
| ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000
|
使用 print
陳述式將所有文字列印出。
1
| awk '{print}' employee.txt
|
使用正則表達式,將包含 manager
字樣的文字列印出。
1 2 3 4
| awk '/manager/ {print}' employee.txt ajay manager account 45000 varun manager sales 50000 amit manager account 47000
|
使用 $1
變數和 $4
變數將第一欄和第四欄的文字列印出。
1 2 3 4 5 6 7 8 9
| awk '{print $1,$4}' employee.txt ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000
|
使用內建變數 NR
將行數印出。
1 2 3 4 5 6 7 8 9
| awk '{print NR, $0}' employee.txt 1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000
|
使用內建變數 NR
將第三行至第六行的文字列印出。
1 2 3 4 5
| awk 'NR==3, NR==6 {print NR, $0}' employee.txt 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000
|
使用內建變數 NF
將第一欄和最後一欄的文字列印出。
1 2 3 4 5 6 7 8 9
| awk '{print $1, $NF}' employee.txt ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000
|