总结一下,awk的相关功能:
awk '{print $0}'
在 Awk 中,变量 $0
表示整个当前行,因此 print
和 print $0
的作用完全相同
awk -F":" '{print $1 " " $3}' /etc/passwd
-F : 参数指定行的内容用的分隔符,如上,使用的是 : 号做的分割处理
比如:
awk -F":" '{print "username:" $1 "\t\tuid:" $3}' /etc/passwd
显示为:
username:root uid:0 username:daemon uid:1 username:bin uid:2 username:sys uid:3 username:sync uid:4 username:games uid:5
BEGIN和END
awk允许在执行文本文件之前,执行相应的初始化代码,同样,awk 也支持在文件处理完成以后执行相应的代码,这个可以用定义END专用代码块来做到(通常情况下,END 块用于进行最终计算或打印应该在输出流结尾处出现的汇总信息)。
正则表达式的查找
比如,需要查找包含有 "hp"这个词的行;
awk '/hp/ {print}' /etc/passwd
显示的结果为:
hplip:x:112:7:HPLIP system user,,,:/var/run/hplip:/bin/false
表达式代码块
寻找以":"分隔,第一列为"ivanzhangwb"的行:
awk -F":" '$1 =="ivanzhangwb" {print}' /etc/passwd
结果显示为:
ivanzhangwb@ivanzhangwb-notebook:~$ awk -F":" '$1 =="ivanzhangwb" {print}' /etc/passwd ivanzhangwb:x:1000:1000:ivanzhangwb,,,:/home/ivanzhangwb:/bin/bash
条件语句
awk -F":" '{if($1=="ivanzhangwb"){print}}' /etc/passwd
特殊变量
NF: 字段数量
打印出每行的字段数量为多少.
awk '{print NF}' /etc/passwd
RS变量 和 OPS 变量.
RS 变量告诉 awk 当前记录什么时候结束,新记录什么时候开始。
OFS 变量表示每个字符串之间打印的间隔符号.