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.178linux.com/90758