用awk解析ss输出

用awk解析ss输出,awk,netstat,Awk,Netstat,我想从我的C程序中获得一些给定应用程序列表的应用程序及其输出端口列表 我在考虑用类似的东西 ss -natp | awk '/firefox/ { split($4,array,":"); printf "%d ", array[2]} END{print ""}'' 这给了我一个类似于4147759505的列表 一次调用ss,然后在所有应用程序中得到这样的结果的有效方法是什么?(多个输出管道?有没有一种最佳方法可以使用awk进行多次匹配?将ss传输到一个文件,然后多次使用awk?) 谢谢

我想从我的C程序中获得一些给定应用程序列表的应用程序及其输出端口列表

我在考虑用类似的东西

ss -natp |  awk '/firefox/ { split($4,array,":"); printf "%d ", array[2]} END{print ""}''
这给了我一个类似于
4147759505
的列表

一次调用ss,然后在所有应用程序中得到这样的结果的有效方法是什么?(多个输出管道?有没有一种最佳方法可以使用awk进行多次匹配?将ss传输到一个文件,然后多次使用awk?)


谢谢

使用
awk
的关联数组功能

ss -natp | awk '{port = split($4, array, ":"); program[$1] = program[$1] " " port; }
                END { for (p in program) print p ": " program[p]; }'

未测试-但概念大致正确。

我没有检查哪个列包含程序名(并且我的主机上没有
ss
,无法找到)。我假设它是
$1
,但是您可以调整脚本以适应它出现的位置。您的脚本与Firefox在线上的任意位置相匹配。