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

nob*_*all 2 awk grep sed

我想在特定字符串之后列出每个唯一数字,并计算该数字在文件中出现的次数。特定的字符串将是 '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
Run Code Online (Sandbox Code Playgroud)

理想的结果是:

length 40: 2
length 54: 1
length 60: 3
Run Code Online (Sandbox Code Playgroud)

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

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

Rav*_*h13 5

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

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

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

  • 这有效!非常感谢!我非常感谢您的宝贵时间 (2认同)