ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 用cut替换常规的awk字段读取

用cut替换常规的awk字段读取

原创 Linux操作系统 作者:regonly1 时间:2009-04-22 16:07:05 0 删除 编辑

经常有很多日志类文件,经常会有截取每行的某些特定部分这样的需求。
这样就出现了awk这个工具。
awk是一个强大的文本处理工具,用于处理以某种方式分割,取某个或某些字段。
还可以进行脚本化,编写复杂的处理语句。一般结构如下:
#!/bin/awk -f
BEGIN{}
/pattern1/{statement1.}
/pattern2/{statement2.}
END{}
BEGIN指定在文本处理前的一些初始化参数,比如指定
对要处理的文本的分隔符,如以“=”作为分隔符:FS="="
其他类似参数还有OFS(指定输出的分隔符)。
还有就是定义一些初始化变量等。
pattern是指匹配的模式,支持正则表达式;
statement表示对匹配到的行的处理行为;
END表示在文本全部处理完后,做最后的总结。

上面介绍的是awk脚本的简单用法,命令行格式如下:
awk -F"=" '/pattern/{statement}'
具体含义不做具体说明了。

现在如有一段日志:
[21/Apr/2009:09:12:22 +0800] - ERROR<5897> - Schema  - conn=-1 p=-1 msgId=-1 - User error:  Entry "ProductId=3021823255,STBID=11040
21011200024C1013482,cn=Subscriber,l=ipauth,dc=iptv,dc=com", attribute "process" is not allowed
[21/Apr/2009:09:12:22 +0800] - ERROR<5897> - Schema  - conn=-1 p=-1 msgId=-1 - User error:  Entry "ProductId=1618391,STBID=11040210
11200024C1013482,cn=Subscriber,l=ipauth,dc=iptv,dc=com", attribute "process" is not allowed
[21/Apr/2009:09:12:22 +0800] - ERROR<5897> - Schema  - conn=-1 p=-1 msgId=-1 - User error:  Entry "ProductId=1647405,STBID=11040210
11200024C1013482,cn=Subscriber,l=ipauth,dc=iptv,dc=com", attribute "process" is not allowed
要取出其中的STBID=这个对应的那段字符串。
grep -h "process" errors | cut -d- -f1,8 | cut -d'"' -f1,2 | cut -d',' -f2 | cut -d'=' -f2 | sort  | uniq -c

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-591448/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-10

  • 博文量
    257
  • 访问量
    1034135