我想在特定字符串之后列出每个唯一数字,并计算该数字在文件中出现的次数。特定的字符串将是 '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}'
使用您显示的示例,请尝试以下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根据显示的所需输出,在代码块中打印索引和数组值。