如何从 的输出中提取以下内容netstat -anp
?
- 删除IP地址
- 远程端口
- 本地应用程序名称
- 本地端口
- PID
我需要这些信息才能在我的 conky 中运行。它显示了一切,但 PID 号的最后一位丢失了。我不明白该sed
命令。请帮忙。
命令如下:
netstat -anp | grep 'ESTABLISHED' | sed -r 's|.*192.[0-9.]+:([0-9]*)\s*([0-9.]+):([0-9]+)[^ESTABLISHED]+\ESTABLISHED ([0-9]*)[^/]+/([a-zA-Z0-9-]*)|\5 \2 \1 \3 \4|' | awk '{printf("%-14s %-15s %8s %6s %8s\n",$1,$2,$3,$4,$5)}'
请您应该打开已建立的连接(例如,使用 firefox)以显示正确的命令输出。
答案1
问题出在 sed 模式的这一部分:
([0-9]*)[^/]+/
它捕获任意数量的数字 0..9,然后至少 1 个不是斜杠“/”的字符,然后是“/”。这是试图匹配一个字符串,例如
ESTABLISHED 2783/firefox
最初,它匹配2783
,但随后必须删除最后一个数字 3,以符合不是斜杠。
解决方法是将 替换+
为 a *
,以允许零匹配:
([0-9]*)[^/]*/