Linux处理文本工具 awk用法简介
1、Awk:报告生成器,以特定的条件查找文本内容,再以特定的格式显示出来awk命令的格式:# awk [option] 'script' file1 file2 ...# awk [option] 'PATTERN{action}' file1 file2 ...
2、awk的输出:printprint的使用格式: print item1,item2,.... 注意:1、各项目间使用逗号分隔开,而输出时以空白字符作为分隔2、输出的item可以为字符串、数值、当前的记录的字段($1)、变量或者awk的表达式;数值会先转换成字符串,然后输出3、print命令后面的item可以省略,此时其功能相当于print $0($0代表未分割的整行文本内容),因此,如果想输出空白行,则需要使用print ""如下图,把系统块设备,名称,挂载点,总大小,空闲列出来。

4、awk内置变量之数据变量NR,NFNR:记录awk所处理的文本的行数,如果有多个文件,所有文件统一进行计数[root@localhost ~]# awk '{print "第",NR,"行内容:",$0}' /etc/hosts /etc/issue

5、printf,格式化输出内容格式:printf format,item1,item2,...1、printf输出时要指定格式format2、format用于指定后面的每个item输出的格式3、printf语句不会自动打印换行符\n[root@localhost ~]# head -n 3 /etc/passwd | awk -F: '{printf "%-10s%-8s%-20s\n", $1,$6,$7}'root /root /bin/bash bin /bin /sbin/nologin daemon /sbin /sbin/nologin
6、PATTERN表示方法1、正则表达式,格式为/regex/2、表达式,由下述操作符组成的表达式 2.1 算术操作符 -x 负值; +x 转换为数值,正值;x^y,x**y 次方 2^3 2**3 x*y;x/y;x+y;x-y;x%y 2.2字符串操作符 +:实现字符串连接 "ab"+"cd" abcd "ab"+"12" ab12 2.3赋值操作符 = += a+=b a=a+b a+=2 a=a+2 -= *= /= %= ^= x ^= y x^y **= ++ x++ x=x+1 -- 2.4 比较操作符 x < y;x <= y;x > y;x >= y;x == y;x != y x ~ y:x为字符串,y为模式,如果x可以匹配则为真,否则为假 "abc" ~ ^a x !~ y 2.5 逻辑关系符 && ||# awk -F: '$7 ~ "bash$"{print $1,$7}' /etc/passwdroot /bin/bashmysql /bin/bash
7、BEGIN/END,特殊模式 BEGIN表示awk进行处理前执行一次操作 END表示awk处理完最后一行结束前执行一次操作使用END打印表尾# awk -F: 'BEGIN{printf "%-10s%-10s%-20s\n","Username","Uid","Shell"}$3==0,$7 ~ "nologin$"{printf "%-10s%-10s%-10s\n",$1,$3,$7}END{print "------END-------"}' /etc/passwdUsername Uid Shell root 0 /bin/bashbin 1 /sbin/nologin------END-------