TL;博士
这个想法是:
awk '{
IP[$1]++;
}
END {
for(var in IP)
print IP[var]
}
}' getline < sockstat | awk '{print $2 "@" $3}' | grep -v '^PROCESS@PID'
我想计算输出中每个块的实例数 -> sockstat | awk '{打印 $2 "@" $3}' | grep -v '^PROCESS@PID'
看起来像:
ubuntu-geoip-pr@2382
chrome@2453
chrome@2453
chrome@2453
chrome@2453
chrome@2453
chrome@2453
chrome@2453
chrome@2453
rhythmbox@4759
rhythmbox@4759
rhythmbox@4759
最后,我想得到输出:
1
8
3
这对应于上一个输出中每个项目的出现次数。
完整的问题:
sockstat命令输出localhost的一些网络统计信息。我首先从输出的第二列和第三列(分别为 PROCESS 和 PID)打印出一个键,格式为 PROCESS@PID。然后,我想从该输出中计算每个唯一键的频率。一种方法是使用 awk getline 结构,但这似乎适用于文件,我无法让它直接从上述命令中提取输入。
我不想使用临时文件,因为这会带走解决方案的优雅。