免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1297 | 回复: 9

awk问题请教 [复制链接]

论坛徽章:
0
发表于 2012-03-05 11:20 |显示全部楼层
本帖最后由 cnleon 于 2012-03-05 11:33 编辑

有个文件内容如下

/abc/x221
/abc/x222
/efg/x221
/efg/x222
/opg?222
/opg?333
/opt/xen/111
/opt/xen/222

我要用一条语句统计/abc 开头和 /efg 开头的行数。

得到的结果如下

/abc 2
/efg 2
/opg 2
/opt/xen 2

论坛徽章:
0
发表于 2012-03-05 11:27 |显示全部楼层
awk '/^\/abc||^\/efg/ {++S[$NF]} END {for(a in S) print a, S[a]}' abc

我用这个方法不行

论坛徽章:
0
发表于 2012-03-05 11:27 |显示全部楼层
  1. awk -F/ '{a["/"$2]++}END{for (i in a)print i,a[i]}' file
复制代码

论坛徽章:
0
发表于 2012-03-05 11:32 |显示全部楼层
回复 3# yangkyo821


   
改了一下问题,稍微有点不同

论坛徽章:
0
发表于 2012-03-05 11:35 |显示全部楼层
唉,又碰到改题的。。。
  1. awk -F/\|? '{a["/"$2]++}END{for (i in a)print i,a[i]}' file
复制代码

论坛徽章:
0
发表于 2012-03-05 11:42 |显示全部楼层
回复 5# yangkyo821


非常感谢,我表达的不是很清楚


文件内容比较复杂

有以下几种形式,我希望可以自己定义开头的内容检查出来就行

/abc?
/efg?
/cdf/123.js
/cdf/456.js
/goo
/a?
/b?

论坛徽章:
0
发表于 2012-03-05 11:47 |显示全部楼层
试验了下你的几种形式,代码运行很好
  1. [joe@joe-laptop ~]$ cat > file
  2. /abc?
  3. /efg?
  4. /cdf/123.js
  5. /cdf/456.js
  6. /goo
  7. /a?
  8. /b?
  9. [joe@joe-laptop ~]$ awk -F/\|? '{a["/"$2]++}END{for (i in a)print i,a[i]}' file
  10. /a 1
  11. /b 1
  12. /abc 1
  13. /cdf 2
  14. /efg 1
  15. /goo 1
复制代码

论坛徽章:
0
发表于 2012-03-05 11:55 |显示全部楼层
回复 7# yangkyo821


    文件如下:
/abc?123
/abc?456
/abc?789
/efg?123
/efg?456
/efg?789
/cdf/123.js?efg
/cdf/123.js?abc
/cdf/456.js?abc
/cdf/456.js?efg
/goo?123
/goo?456
/a?111
/b?111

要得到的结果是
/abc? 3
/efg? 3
/cdf/123.js? 2
/cdf/456.js? 2
/goo? 2
/a? 1
/b? 1

论坛徽章:
0
发表于 2012-03-05 12:00 |显示全部楼层
你这样又全是问号了,只需小改即可
  1. [joe@joe-laptop ~]$ awk -F? '{a[$1]++}END{for (i in a)print i FS,a[i]}' file
  2. /a? 1
  3. /b? 1
  4. /abc? 3
  5. /efg? 3
  6. /goo? 2
  7. /cdf/456.js? 2
  8. /cdf/123.js? 2
复制代码
也许这还不是你想要的,但关键是要写清楚如何来判断所需要统计的每行开头与行的其他内容的分隔符是什么
是/还是?或者都有,或者还有其他的,这个分隔符是肯定会有规律可行的

论坛徽章:
0
发表于 2012-03-05 12:21 |显示全部楼层
回复 9# yangkyo821


   
这个分隔符是不一定的,所以我得再自己看看,真是太谢谢你了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP