正则表达式来计算一些字符

时间:2013-02-26 09:29:47

标签: regex bash awk

我得到了像这样的行构建的文件

yyyy-mm-dd hh-mm-ss * -start *
yyyy-mm-dd hh-mm-ss * -end *  

任何人都可以帮我构建正则表达式来计算最常见的“-mm-ss”并打印出它们的排序吗? by *我的意思是任何字符串

2 个答案:

答案 0 :(得分:1)

awk '{split($2,a,"-");b[a[2]"-"a[3]]++}END{for(i in b)print i,b[i]}' your_file

测试:

> cat temp
yyyy-mm-dd hh-11-55 * -start *
yyyy-mm-dd hh-11-55 * -start *
yyyy-mm-dd hh-12-22 * -end *  
> nawk '{split($2,a,"-");b[a[2]"-"a[3]]++}END{for(i in b)print i,b[i]}' temp
12-22 1
11-55 2
> 

下面是首先打印所有hh-mm然后打印所有mm-ss的命令:

awk '{split($2,a,"-");b[a[2]"-"a[3]]++;c[a[1]"-"a[2]]++}END{for(i in c)print i,c[i];for(i in b)print i,b[i]}' your_file

答案 1 :(得分:0)

$ cat tmp
yyyy-mm-dd hh-11-55 * -start *
yyyy-mm-dd hh-11-55 * -start *
yyyy-mm-dd hh-12-22 * -end *  

$ cut -c 15-19 tmp | sort | uniq -c
      2 11-55
      1 12-22
相关问题