1:AWK介紹
有多種版本:New awk(nawk),GNU awk( gawk) ?
gawk:模式掃描和處理語言 ?
基本用法: awk [options] ‘program’ var=value file…
awk [options] -f programfile var=value file…
awk [options] ‘BEGIN{ action;… } pattern{ action;… } END{ action;… }’ file …
awk 程序通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊 、END語句塊,共3部分組成 ? ? ? program通常是被單引號或雙引號中
選項:
-F 指明輸入時用到的字段分隔符
-v var=value: 自定義變量
BEGIN,END
print, printf
2:AWK基本用法
print格式: print item1, item2, …
要點:
(1) 逗號分隔符
(2) 輸出的各item可以字符串,也可以是數值;當前記錄的字段、變量或awk的表達式
(3) 如省略item,相當于print $0
示例
awk ‘{print “hello,awk”}’
awk –F”:” ?‘{print}’ /etc/passwd
awk –F: ‘{print $1}’ /etc/passwd
awk –F: ‘{print $0}’ /etc/passwd
awk –F: ‘{print $1”\t”$3}’ /etc/passwd
tail –3 /etc/fstab |awk ‘{print $2,$4}’
3:AWK變量
變量:內置和自定義變量
FS:輸入字段分隔符,默認為空白字符
awk -v FS=’:’ ‘{print $1,FS,$3}’ /etc/passwd
awk –F: ‘{print $1,$3,$7}’ /etc/passwd
OFS:輸出字段分隔符,默認為空白字符
awk -v FS=‘:’ -v OFS=‘:’ ‘{print $1,$3,$7}’ /etc/passwd
RS:輸入記錄分隔符,指定輸入時的換行符
awk -v RS=’ ‘ ‘{print }’ /etc/passwd
ORS:輸出記錄分隔符,輸出時用指定符號代替換行
awk -v RS=’ ‘ -v ORS=’###’‘{print }’ /etc/passwd
NF:字段數量
awk -F: ‘{print NF}’ /etc/passwd,引用內置變量不用$
awk -F: ‘{print $(NF-1)}’ /etc/passwd
NR:記錄號
awk ‘{print NR}’ /etc/fstab
FNR:各文件分別計數,記錄號
awk ‘{print FNR}’ /etc/fstab /etc/inittab
FILENAME:當前文件名
awk ‘{print FILENAME,NR,$0}’ /etc/fstab
ARGC:命令行參數的個數
awk ‘{print ARGC}’ /etc/fstab /etc/inittab
awk ‘BEGIN {print ARGC}’ /etc/fstab /etc/inittab
ARGV:數組,保存的是命令行所給定的各參數
awk ‘BEGIN {print ARGV[0]}’ /etc/fstab /etc/inittab
代表第一個參數
awk ‘BEGIN {print ARGV[1]}’ /etc/fstab /etc/inittab
代表第二個參數
自定義變量(區分字符大小寫)
(1) -v var=value
(2) 在program中直接定義
示例:
awk -v test=’hello gawk’ ‘{print test}’ /etc/fstab
awk -v test=’hello gawk’ ?‘BEGIN{print test, “is haha” }’
awk –F:‘{sex=“male”;print $1,sex,age;age=18}’ /etc/passwd
調用文件
{sex=”male”;print $1,sex,age;age=18}
awk -F: -f abc.txt /etc/passwd
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90758