awk(一)-知行

Windows Windows 2个月前 (08-15) 5次浏览 未收录 0个评论 扫描二维码

awk是一个优良的文本处理工具,Linux及Unix环境中功能最强大的数据处理引擎之一。

命令形式:

? awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file??

? ? -F,–field-separator指定分隔符

? ? -f,–file调用脚本

? ? -v,–assign定义变量 var=value

? ? ”, 引用代码块?

? ? BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符?

? ? //? ?匹配代码块,可以是字符串或正则表达式?

? ? {}? ?命令代码块,包含一条或多条命令?

? ? ;? ?多条命令使用分号分隔?

? ? END? 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息

例:

awk ‘{print ” “}’ /etc/passwd #不输出passwd的内容,而是输出相同个数的空行

? awk ‘{print “a”}’? /etc/passwd #输出与文件相同行数的行,一行只有一个a字母

例:

awk -F “:” ‘{print $1}’ /etc/passwd #输出以“:”为分隔符的每行的第一个字段

awk -F : ‘{print $1,$2}’ /etc/passwd#输出以“:”为分隔符的每行的第一和第二个字段

awk -F : ‘{print $1 $2}’ /etc/passwd#输出以“:”为分隔符的每行的第一和第二个字段相连输出,不分割

awk -F : ‘{print $1 ” ” $2}’ /etc/passwd#$1和$2之间手动添加空格分隔

awk -F : ‘{print $1,$2,$5}’ OFS=’\t’ /etc/passwd#输出以“:”为分隔符的每行的第一、二、五个字段,并且以制表符分隔

说明:

? ? $1 指指定分隔符后,第一个字段,$3第三个字段, \t是制表符?

例:

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 #输出每行的行号及内容?

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行?

awk ‘NR!=1{print}’ /etc/passwd /不显示第一行

喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址