命令:
.text()
输出:
netstat -anp | grep -i 8009 | awk '{print $7;}'
期望的输出:
9345/java
我想只提取进程ID,即9345。 我还可以在命令中添加什么来获得所需的输出?
答案 0 :(得分:0)
使用cut
!
echo "9345/java" | cut -d '/' -f 1
#Output: 9345
把它们放在一起:
netstat -anp | grep -i 8009 | awk '{print $7;}' | cut -d '/' -f 1
答案 1 :(得分:0)
将awk
与定义的分隔符一起使用 -
netstat -anp | grep -i 8009 | awk '{print $7;}' | awk -F/ '{print $1}'
或者稍微清理一下,
netstat -anp | awk '/8009/ {print $7;}' | awk -F/ '{print $1}'
答案 2 :(得分:0)
做另一个grep
netstat -anp | grep -i 8009 | awk '{print $7;}' | grep --regexp="\d+[^\/]"
正则表达式解释:
\d+
匹配一个或多个数字
[^\/]
排除字符'/'
答案 3 :(得分:0)
您可以使用sub
并提供一个正则表达式,用空字符串替换每个非数字字符,从而产生仅数字输出。修改你的代码:
netstat -anp | grep -i 8009 | awk '{sub("[^0-9]+", ""); print $1}'
答案 4 :(得分:0)
为什么要在一个命令中同时使用awk
和grep
?
仅使用awk
:
netstat -anp |awk -v port="40759" '$0 ~ port {split($7,a,"/");print a[1]}'
25873
或仅使用grep
:
netstat -anp |grep -oP '31805\s+\K.*(?=/)'