我想从我的C程序中获取一些给定应用程序列表的应用程序及其输出端口列表。
我正在考虑使用像
这样的东西ss -natp | awk '/firefox/ { split($4,array,":"); printf "%d ", array[2]} END{print ""}''
给了我一个像41477 59505
的列表。
一次调用ss然后为所有应用程序获取此类内容的有效方法是什么? (多个输出管道?是否有一种最佳的方法可以将awk用于许多匹配?将ss捕获到文件中然后多次使用awk?)
谢谢!
答案 0 :(得分:3)
使用awk
的关联数组功能。
ss -natp | awk '{port = split($4, array, ":"); program[$1] = program[$1] " " port; }
END { for (p in program) print p ": " program[p]; }'
未经测试 - 但概念大致正确。