gawk - pattern scanning and processing language
基本用法:gawk [options] 'program' FILE ...
program:PATTERN{ACTION STATEMENTS}
语句之间用分号分隔
print,printf
选项:
-F:指明输入时用到的字段分隔符;
-v var=value:自定义变量;
1、print
print item1,item2, ...
要点:
(1)逗号分隔符;
(2)输出的各item可以字符串,也可以是数值;当前记录的字段、变量或awk的表达式。
(3)如省略item,相当于print $0;
2、变量
2.1 内建变量
FS:input field seperator,默认为空白字符;
OFS:output field seperator,默认为空白字符;
RS:input record seperator,输入时的换行符;
ORS:output record seperator,输出时的换行符;
NF:number of field,字段数量
{print NF},{print $NF}
NR:number of record,行数;
FNR:各文件分别计数:行数;
[root@c7 ~]# awk -v FS=':' '{print $2}' /etc/passwd
-v FS=':'指定分隔符为:号,{print $2}取第二个段落的值
[root@c7 ~]# awk -v FS=':' '{print $1,$3,$7}' /etc/passwd
root 0 /bin/bash
bin 1 /sbin/nologin
daemon 2 /sbin/nologin
adm 3 /sbin/nologin
{print $1,$3,$7}是取第1、3、7列的值,它们中间用空格来分隔开来,下面是指定:为分隔符
[root@c7 ~]# awk -v FS=':' -v OFS=':' '{print $1,$3,$7}' /etc/passwd
root:0:/bin/bash
bin:1:/sbin/nologin
daemon:2:/sbin/nologin
-v OFS=':'是指定:号为分隔符
本文转自cix123 51CTO博客,原文链接:http://blog.51cto.com/zhaodongwei/1766778,如需转载请自行联系原作者