awk -Fc [ -f fileName ] program { variable = value } * {fileName} *
通常會先講語法放在一個檔案中,然後使用參數 -f 來執行
如果要把語法放在 command 中,要用單引號(')括起來
[ condition ] [ \{ action \} ]
BEGIN END
或邏輯運算、關係、正規表示式
if() ... [else ...] while() ... for( ; ; ) ... break continue var = expresion print [ list of expressions ] [ > expression ] printf format [ , list of expressions ] [ > expression ] next (忽略此行剩下的輸入文字) exit
Variable | Function |
---|---|
NF | 此行的總單字數 number of fields |
NR | 印出 awk 目前執行到檔案的第幾行 |
$0 | 整行 |
$n | 第 n 個單字 |
$NF | 最後一個單字 |
FILENAME | 欲傳給 awk 處理的檔案名稱 |
變數間用逗號(,)分隔,輸出會空一個空白,沒用逗號會連在一起
正規表示式要用斜線(/)括起來
從字串「begin」開始印,直到遇到「end」
/begin/ , /end/ { print $0 }
exp() log() sqrt() int() substr(string, from_index, to_index)
# awk '{ print NF, $0 }' fileName
BEGIN { print "Start file: ", FILENAME } { print $1 $3 $NF } END { print "End: " }
# awk -f awk1 fileName
NR > 1 && NR < 4 { printf "line %d: %s\n", NR, $0 }
/t.*e/ { print $0 }
以冒號來分割單字
$ awk -F: '{...}' fileName
{ for ( i = NF; i >= 1; i-- ) printf "%s ", $i; printf "\n"; }
印出內容有 abcde 的行。
$ awk '/abcde/ {print $0}' fileName