【问题标题】:parsing ss output with awk用 awk 解析 ss 输出
【发布时间】:2012-01-14 02:17:37
【问题描述】:

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

我正在考虑使用类似的东西

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

这给了我一个类似41477 59505的列表。

调用 ss 一次然后为所有应用程序获取这样的有效方法是什么? (多个输出管道?是否有最佳方式使用 awk 进行多次匹配?将 ss 写入文件,然后多次 awk-ing 多次?)

谢谢!

【问题讨论】:

    标签: awk netstat


    【解决方案1】:

    使用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 的任何位置。
    猜你喜欢
    • 1970-01-01
    • 2020-03-15
    • 2021-11-27
    • 2018-05-06
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多