awk-example

来源:互联网 发布:电脑速录软件 编辑:程序博客网 时间:2024/05/16 10:54

本文是在linux的shell下运行命令和解说

本文参考了:http://man.linuxde.net/awk

风哥注:awk是一个和C语言一样的语言,和python语言在命令行中的使用一样,都要在允许的命令之前加python等标记。

一、解说-e是启用转义字符

shawn@shawn-ThinkStation-P700:~/桌面$ echo -e "A line 1 \nA Line 2" | awk 'BEGIN{print "Start"} {print} END{print "End"}' StartA line 1 A Line 2End

二、NR=now recode 当前记录数几行号,NF=now field当前字段即本段有几个分离的单词亦即单词数,其中$0表示本行所有单词,而 $1表示本行第一个单词, $2 $3类推。

shawn@shawn-ThinkStation-P700:~/桌面$ echo -e " line1 f2 f3 \n line2 f4 f5 \n line3 f6 f7"| awk '{print "Line No:"<span style="color: #ff00ff;">NR</span>", No of fields:"<span style="color: #ff00ff;">NF</span>, "$0="<span style="color: #ff00ff;">$0</span>, "$1="<span style="color: #ff00ff;">$1</span>, "$2="<span style="color: #ff00ff;">$2</span>, "$3="<span style="color: #ff00ff;">$3}</span>' <span style="color: #ff00ff;">Line No:</span>1, <span style="color: #ff00ff;">No of fields:</span>3 $0= <span style="color: #ff00ff;">line1 f2 f3</span>  $1=line1 $2=f2 $3=f3Line No:2, No of fields:3 $0= <span style="color: #ff00ff;">line2 f4 f5</span>  $1=line2 $2=f4 $3=f5Line No:3, No of fields:3 $0= <span style="color: #ff00ff;">line3 f6 f7</span>  $1=line3 $2=f6 $3=f7

三、NF前面加$表示从后面数,当然NF-1倒过来就是倒数第二个了。

shawn@shawn-ThinkStation-P700:~/桌面$ echo -e "line1 f2 f3\n line2 f4 f5" | awk '{print <span style="color: #ff00ff;">$NF</span>}'f3f5shawn@shawn-ThinkStation-P700:~/桌面$ echo -e "line1 f2 f3\n line2 f4 f5" | awk '{print <span style="color: #ff00ff;">$(NF-1)</span>}'f2f4

四、另外注意,awk是对每行进行处理、例如获取文件中每行的第二个和第三个字段:

shawn@shawn-ThinkStation-P700:~/桌面$ awk '{ print $2,$3 }' test.txtI could first thing to save to spend I could words could save every I would

五、统计文件中的行数,NR在没一行都会更新一下,所有END里面的NR就是最新的

shawn@shawn-ThinkStation-P700:~/桌面$ awk 'END{print NR}' test.txt15

六、加法计算,seq是序列sequence的意思、

shawn@shawn-ThinkStation-P700:~/桌面$ seq 5 12345shawn@shawn-ThinkStation-P700:~/桌面$ seq 5 | awk 'BEGIN{sum=0;print "总和"} {print $1 "+";sum+=$1} END{print "sum=";print sum}'总和1+2+3+4+5+sum=15

七、变量倒入方法,试了一下不把echo加上,此时出现按回车键不结束,

shawn@shawn-ThinkStation-P700:~/桌面$ VAR=520shawn@shawn-ThinkStation-P700:~/桌面$ echo | awk -v VARIABLE=$VAR '{print VARIABLE}'520shawn@shawn-ThinkStation-P700:~/桌面$ var1="aaa"shawn@shawn-ThinkStation-P700:~/桌面$ var2="bbb"shawn@shawn-ThinkStation-P700:~/桌面$ echo | awk '{print v1,v2}' v1=$var1 v2=$var2aaa bbb

八、逻辑与算术运算

shawn@shawn-ThinkStation-P700:~/桌面$ awk 'BEGIN{a=1;b=1; print (a>5 && b<=2),(a>5 || b<=2);}'0 1

九、匹配正则表达式~,不匹配~!

shawn@shawn-ThinkStation-P700:~/桌面$ awk 'BEGIN{a="100testa";if(a ~ /^100*/){print "OK";}}'OK







0 0
原创粉丝点击