linux操作命令awk linux常用命令大全( 二 )


-f:指明在档案awk-script-file中的awk指令码
input-file(s):使用awk进行浏览的档名 。
awk指令码
在命令中呼叫awk时,awk指令码由各种操作和模式组成 。
-F,awk每次读一条记录或一行,并使用指定的分隔符分分隔指定域;
所没分隔符,则使用空格 。
任何awk语句都由模式和动作组成
模式,决定动作语句何时触发及触发事件,若忽略模式部分,动作将时刻保持执行状态 。
模式,可是任何条件语句,或符合语句,或正则表示式 。
BEGIN:设定计数,列印头 , 在任何文字浏览动作之前;
END:用来在awk完成档案浏览动作后列印输出档案总数和结尾状态标志 。
动作,在{}内指定;大多用来列?。焕锩婵砂篿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默认会把匹配到的行打印出来 。

推荐阅读