Linux文本处理三剑客-甜味拾荒者-51CTO博客,


awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 报告工具1.awk:一次处理一行2.print:输出打印 printf:格式化输出3.%c :字符4.NR :record number :行号5.awk处理过程 :依次对每一行进行处理,然后输出6.awk命令形式: awk [-F|-f|-v] ‘BEGIN{} //{command1;command2} END{}’ file7.特殊要点:

~ 匹配,与==相比不是精确比较 匹配时表示1个或1个以上

/[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语句

相关内容

    暂无相关文章