awk-example

本文是在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"}' 
Start
A line 1 
A Line 2
End

二、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=f3
Line No:2, No of fields:3 $0= <span style="color: #ff00ff;">line2 f4 f5</span>  $1=line2 $2=f4 $3=f5
Line 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>}'
f3
f5
shawn@shawn-ThinkStation-P700:~/桌面$ echo -e "line1 f2 f3\n line2 f4 f5" | awk '{print <span style="color: #ff00ff;">$(NF-1)</span>}'
f2
f4

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

shawn@shawn-ThinkStation-P700:~/桌面$ awk '{ print $2,$3 }' test.txt
I 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.txt
15

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

shawn@shawn-ThinkStation-P700:~/桌面$ seq 5 
1
2
3
4
5
shawn@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=520
shawn@shawn-ThinkStation-P700:~/桌面$ echo | awk -v VARIABLE=$VAR '{print VARIABLE}'
520

shawn@shawn-ThinkStation-P700:~/桌面$ var1="aaa"
shawn@shawn-ThinkStation-P700:~/桌面$ var2="bbb"
shawn@shawn-ThinkStation-P700:~/桌面$ echo | awk '{print v1,v2}' v1=$var1 v2=$var2
aaa 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值