awk实例
2017-09-15awk是一个强大的文本分析工具,简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。结合grep和sed,能快捷的处理文本。有专门介绍awk的书。
1、cat /etc/passwd|awk -F: '{print $1}'
find /etc/init.d/ -type f -name "redis*"|awk '{printf "%s stop\n",$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的stop.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 access.log|awk 'NF=7' OFS='\t' >> b.txt
cut -d"," -f3-6 urfile