awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 报告工具<>1.awk:一次处理一行
<>2.print:输出打印 printf:格式化输出<>3.%c :字符
<>4.NR :record number :行号
<>5.awk处理过程 :依次对每一行进行处理,然后输出<>6.awk命令形式: awk [-F|-f|-v] ‘BEGIN{} //{command1;command2} END{}’ file<>
<>7.特殊要点:
<>
<>
~ 匹配,与==相比不是精确比较
/[0-9][0-9]+/ 两个或两个以上数字
//不输出passwd的内容,而是输出相同个数的空行,进一步解释了awk是一行一行处理文本
//将每一行的前二个字段,分行输出,进一步理解一行一行处理文本
-f指定脚本文件
awk 'BEGIN{X=0} /^$/{ X+=1 } END{print "I find",X,"blank lines."}' test
-F指定分隔符
awk -F":" '{print "Username:" $1 "\t\t Uid:" $3 }' /etc/passwd //自定义输出
awk -F: '{print NF}' /etc/passwd
//显示每行有多少字段
awk -F: '{print $NF}' /etc/passwd //将每行第NF个字段的值打印出来
awk -F: 'NF==4 {print }' /etc/passwd //显示只有4个字段的行
awk -F: 'NF>2{print $0}' /etc/passwd //显示每行字段数量大于2的行
awk '{print NR,$0}' /etc/passwd
cat -n /etc/passwd
//输出每行的行号
awk -F: '{print NR,NF,$NF,"\t",$0}' /etc/passwd //依次打印行号,字段数,最后字段值,制表符,每行内容
awk -F: 'NR==5{print}' /etc/passwd //显示第5行
awk -F: 'NR==5 || NR==6{print}' /etc/passwd //显示第5行和第6行
route -n|awk 'NR!=1{print}' //不显示第一行
<>
awk '/mysql/' /etc/passwd
IF语句
条件表达式
逻辑运算符
数值运算
输出分隔符OFS
输出处理结果到文件
格式化输出
IF语句