awk

网易面试题:在linux系统下,给你一个日志文件,总共有四列,第四列有20

种不同的值,统计这些值的出现的次数。


awk -F "," '{ w[$1]+=1} END{ for (a in w)  print a, w[a]}' src.txt 


{ w[$1]+=1}:计算每一个数组中出现的每一个值得次数。

{ for (a in w)  print a, w[a]} :打印出每一个数以及出现的次数。






统计文件中指定字符串出现的次数

  1. linux统计某一文件中字符串“sent ip”出现的次数: cat nohup.log |grep "sent ip" |wc -l  http://blog.csdn.net/rn7ps8bn/article/details/4575146提出采用上述方法。
  2. 命令行下,输入grep -c '要查找的字符串'  文件名.txt 。
  3. awk : awk '{print'$4'}' |  grep ‘abc’|wc -l。

使用awk命令获取文本的某一行,某一列

1、打印文件的第一列(域)                 : awk '{print $1}' filename
2、打印文件的前两列(域)                 : awk '{print $1,$2}' filename

3、打印完第一列,然后打印第二列  : awk '{print $1 $2}' filename
4、打印文本文件的总行数                : awk 'END{print NR}' filename
5、打印文本第一行                          :awk 'NR==1{print}' filename
6、打印文本第二行第一列                :sed -n "2, 1p" filename | awk 'print $1'



http://blog.csdn.net/rn7ps8bn/article/details/4575146提出采用上述方法。提出采用上述方法。


awk的语法: 

与其它UNIX命令一样,awk拥有自己的语法: 

awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...] 

参数说明: 

-F re:允许awk更改其字段分隔符。 

parameter: 该参数帮助为不同的变量赋值。 

'prog': awk的程序语句段。这个语句段必须用单拓号:'和'括起,以防被shell解释。这个程序语句段的标准形式为: 

'pattern {action}' 

其中pattern参数可以是egrep正则表达式中的任何一个,它可以使用语法/re/再加上一些样式匹配技巧构成。与sed类似,你也可以使用","分开两样式以选择某个范围。关于匹配的细节,你可以参考附录,如果仍不懂的话,找本UNIX书学学grep和sed(本人是在学习ed时掌握匹配技术的)。action参数总是被大括号包围,它由一系统awk语句组成,各语句之间用";"分隔。awk解释它们,并在pattern给定的样式匹配的记录上执行其操作。与shell类似,你也可以使用“#”作为注释符,它使“#”到行尾的内容成为注释,在解释执行时,它们将被忽略。你可以省略pattern和action之一,但不能两者同时省略,当省略pattern时没有样式匹配,表示对所有行(记录)均执行操作,省略action时执行缺省的操作――在标准输出上显示。 

-f progfile:允许awk调用并执行progfile指定有程序文件。progfile是一个文本文件,他必须符合awk的语法。 

in_file:awk的输入文件,awk允许对多个输入文件进行处理。值得注意的是awk不修改输入文件。如果未指定输入文件,awk将接受标准输入,并将结果显示在标准输出上。awk支持输入输出重定向。 
 awk '{print'$4'}' |  grep ‘abc’|wc -l。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值