awk命令:
awk [option] 'pattern[action]' file
[option]为可选项参数
pattern为模式
[action]为执行动作,一般有print和printf
file则为文件
awk的内置变量:
$n 指定分隔符(如$1指的是第一个字段,$2指的是第二个字段,$NF则是最后一个字段)
$0 默认指的是全文
FS 字段分割符,默认为空格
NF 分割后,当前行有多少个字段
NR 当前记录行数
awk的内置函数学习:
[root@ths /]# sed -n '1,5p' lianxin | awk -F ':' '{print $1,$2,$NF}'
root x /bin/bash
bin x /sbin/nologin
daemon x /sbin/nologin
adm x /sbin/nologin
lp x /sbin/nologin
#首先打印出lianxin的前五行,使用awk罗列出第一,第二和最后一列(区别的分割符为:)
[root@ths /]# sed -n '1,5p' lianxin | awk -F ':' '{print $NF,$1}'
/bin/bash root
/sbin/nologin bin
/sbin/nologin daemon
/sbin/nologin adm
/sbin/nologin lp
#需要注意的是awk的文本处理是根据$的排序进行打印输出的
[root@ths /]# sed -n '1,5p' lianxin | awk -F ':' '{print "最后一列",$NF,"第一列",$1}'
最后一列 /bin/bash 第一列 root
最后一列 /sbin/nologin 第一列 bin
最后一列 /sbin/nologin 第一列 daemon
最后一列 /sbin/nologin 第一列 adm
最后一列 /sbin/nologin 第一列 lp
#也可以在$输出前加上相关的参数说明(需要注意的是,在内层增加参数需要使用"")
[root@ths /]# sed -n '1,5p' lianxin | awk -F ':' '{print "第一列",$1,"倒数第二列",$(NF-1)}'
第一列 root 倒数第二列 /root
第一列 bin 倒数第二列 /bin
第一列 daemon 倒数第二列 /sbin
第一列 adm 倒数第二列 /var/adm
第一列 lp 倒数第二列 /var/sp