【问题标题】:UNIX expression to filter out PID from netstat output从 netstat 输出中过滤掉 PID 的 UNIX 表达式
【发布时间】:2015-09-14 19:28:47
【问题描述】:

下面是命令输出:

netstat -plten|grep  45678
tcp        0      0 :::45678                    :::*                        LISTEN      0          129367622  109746/java

但是,我想得到“109746”作为输出。

我试过了:

netstat -plten|grep  45678|awk ' {print$9}'

但是这个给出109746/java作为输出;有什么办法吗,我可以使用$9 来匹配一些正则表达式,以便获得所需的输出。

【问题讨论】:

  • netstat -plten | grep 45678 | awk '{print $9}' | sed -e 's/\/.*$//'

标签: unix awk grep netstat unix-socket


【解决方案1】:

您可以告诉 awk 将/(除了空白之外)作为字段分隔符。这样,java 被视为一个单独的字段,不包含在字段 9 中:

$ netstat -plten | awk -F'[ /]+' ' /45678/{print$9}'
109746

-F'[ /]+' 告诉 awk 使用空白、/ 或这两者的任意组合作为字段分隔符。

另外,在 awk 前面使用 grep 45678 也不是必须的。在上面,awk 条件/45678/ 选择包含45678 的行。

【讨论】:

  • 非常感谢,非常感谢您的回复。
  • 为我生成了空白输出,但这对我有帮助:netstat -ptan | awk -F'[ /]+' '{print$7}' 另外,奖励:为找到的进程打印完整的命令行netstat -ptan | grep 45678 | awk -F'[ /]+' '{print$7}' | sed -e 's/^/pidstat -l -p /g' | bash -s
猜你喜欢
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
相关资源
最近更新 更多