列出unique并计算字符串后的第一个数字匹配

我想在特定字符串之后列出每个唯一数字,并计算该数字在文件中出现的次数。特定的字符串将是 'length' 及其后的第一个数字。

当前数据例如:

*random string* length: 40
*random string* length: 54
*random string* length: 40
*random string* length: 60
*random string* length: 60
*random string* length: 60

理想的结果是:

length 40: 2
length 54: 1
length 60: 3

目前,我正在编写我在 24,111 行文件中手动看到的每个数字的计数,这是不切实际的。

cat file.txt | awk '/length: 60/ {total++} END {print total}'

回答

使用您显示的示例,请尝试以下awk代码。

awk '
match($0,/length: [0-9]+/){
  cnts[substr($0,RSTART,RLENGTH)]++
}
END{
  for(key in cnts){
    print key": "cnts[key]
  }
}
' Input_file

说明:使用match函数匹配length: digits所有行中的字符串,然后使用第二个字段创建数组并继续将其值添加到同一索引。END根据显示的所需输出,在代码块中打印索引和数组值。

  • This worked! Thank you very much! I very much appreciate your time

以上是列出unique并计算字符串后的第一个数字匹配的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>