从netstat输出中过滤PID的UNIX表达式

3

以下是命令的输出:

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/\/.*$//' - hrbrmstr
1个回答

4
你可以告诉awk将/作为字段分隔符,而不仅仅是空格。这样,java就被视为单独的一个字段,不会被包含在第9个字段中:
$ netstat -plten | awk -F'[ /]+' ' /45678/{print$9}'
109746

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

另外,在awk前面使用grep 45678是不必要的。在上述内容中,awk条件/45678/选择包含45678的行。


1
非常感谢,我真的很感激你的回复。 - muhdchoaib
对我来说,它产生了空白输出,但这是帮助我的方法:netstat -ptan | awk -F'[ /]+' '{print$7}' 另外,奖励内容:打印找到的进程的完整命令行 netstat -ptan | grep 45678 | awk -F'[ /]+' '{print$7}' | sed -e 's/^/pidstat -l -p /g' | bash -s - GDR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接