linuxgawk命令 linux gawk( 二 )


所没分隔符,则使用空格 。
任何awk语句都由模式和动作组成
模式,决定动作语句何时触发及触发事件 , 若忽略模式部分 , 动作将时刻保持执行状态 。
模式 , 可是任何条件语句,或符合语句,或正则表示式 。
BEGIN:设定计数,列印头,在任何文字浏览动作之前;
END:用来在awk完成档案浏览动作后列印输出档案总数和结尾状态标志 。
【linuxgawk命令 linux gawk】 动作,在{}内指定;大多用来列?。焕锩婵砂篿f,looping,回圈推出结构;
若不指明采取动作,awk将列印所有浏览出来的记录 。
如何在Linux中使用awk命令
awk例项
1、cat /etc/passwd|awk -F: '{print $1}'
2、linux的awk一般都是gawk , /bin/awk - gawk
3、awk ‘/abc/’ file.txt 显示档案中包含abc行 。类似grep abc a.txt
4、awk ‘{print NR,NF,$1,$NF,}’ file.txt按空格分隔列 , 显示当前记录号、域数和每一行的第一列和最后一列 。
-F引数可以设定分割引数,例如按:分割
awk -F: ‘{print $1}’ /etc/passwd
或者cat file|awk -F “|” ‘{print $1}’
5、awk程式语言
cat v.txt|awk ‘{print length($1)}’
6、awk中使用NR和FNR,一般在awk处理多个档案时 , NR==FNR才有意义
NF 当前记录中的栏位数 。
NR 当前记录数 。
FNR同NR,但相对于当前档案 。
awk ‘{print NR,FNR}’ test.txt test2.txt
awk ‘{if(NR==FNR){a[FNR]=$1;}else{print $1,a[FNR]}}’ b.txt a.txt
7、列印奇数行与偶数行
awk ‘NR%2’ test.txt
awk ‘!(NR%2)’ test.txt
8、杀死tomcat的s.sh指令码
#!/bin/sh
ps -ef| grep tomcat |grep -v grep | awk ‘{print $2}’ |xargs kill -9
9、列印前7列
cat a.txt|awk ‘{NF=7}1’b.txt
tail -f aess.log|awk ‘NF=7′ OFS=’\t’b.txt
cut -d”,” -f3-6 urfile
LINUX系统怎么使用awk命令实现下述操作
cat file|awk -F"name=" '{print $2}'|awk -F\" '{print $1}'
试试看 , 第二个”的转义,我没测试,可以自己调下
Linux入门系列——awk命令详解 awk是一个强大的文本分析工具,与grep、sed相比,awk在对数据分析并生成报告时,显得有很大的优势 。
awk有三个不同的版本:awk、nawk和gawk,在没有做特殊说时的时候默认的就是gawk,gawk是awk的GNU版本 。
其中command是真正的awk命令,-F表示域的分隔符,是个可选项 。Filename是等待处理的文件
将所有的awk命令写入到一个文件,并使用该文件有X权限 , 然后awk命令解释器作为脚本的首行,也就是说可以把脚本最开始的 #!/bin/bash换成 #!/bin/awk
最后直接执行这个脚本文件就行了 。
-f 指定要加载的awk脚本,是一个文件 。Filename是等待处理的文件
awk的工作流程是这样的:读入一行后(最后面带有” ”的),就按-F指定的分隔符来将该行划分成N个区域,$0表示所有的区域 , $1表示第一个域 , $2表示第二个域 , 依此类推,$n表示第n个域 。
总结:awk先执行BEGIN内的命令,然后再读入文件中的行 , 接着就是按照指定的分隔符将该行分成N个区域,然后再来执行模式所对应的动作action 。然后 , 再来读入第二行 。。再重复执行action,直到所有的行都处理完成 。最后再执行END中的命令 。
注意:' // '之间是支持正则表达式的,如果此处只有pattern,而没有action , 那么awk默认会把匹配到的行打印出来 。
awk中的print还可以使用C语言中的printf来替代 。在输出格式比较复杂的时候使用printf函数会比print函数要更直观一些,如下:

推荐阅读