用awk解析ss输出

时间:2012-01-13 18:05:39

标签: awk netstat

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

我正在考虑使用像

这样的东西
ss -natp |  awk '/firefox/ { split($4,array,":"); printf "%d ", array[2]} END{print ""}''

给了我一个像41477 59505的列表。

一次调用ss然后为所有应用程序获取此类内容的有效方法是什么? (多个输出管道?是否有一种最佳的方法可以将awk用于许多匹配?将ss捕获到文件中然后多次使用awk?)

谢谢!

1 个答案:

答案 0 :(得分:3)

使用awk的关联数组功能。

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

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