如何使用 awk (或更好的东西)从这个 lsof -F 输出中捕获端口号?

如何使用 awk (或更好的东西)从这个 lsof -F 输出中捕获端口号?

我得到的输出如下所示lsof -F

p7646
g7646
R8300
csocat
u1000
Labe
f3
au
l
tIPv4
G0x80002;0x0
d640391
o0t0
PTCP
n*:51352
TST=LISTEN
TQR=0
TQS=0

我正在尝试捕获 value 51352,这是我有兴趣了解的绑定端口。

我很接近,我可以n*:51352通过以下方式获得价值:

awk '/^n/ { print $1 }'

实际上可以通过两个单独的s获得51352我需要的确切值:awk

awk '/^n/ { print $1 }' | awk -F':' '{print $2}'

但是有没有更好的方法,无论是单个命令awk还是更干净的非awk解决方案?

应该只有一行以开头,n*所以我不需要担心处理多行。

答案1

将两者结合起来:

awk -F: '/^n\*:/ {print $2}'

答案2

其他可能性:

  • sed

    sed -n 's/^n\*:\(.*\)/\1/p'
    
  • grep

    grep -Po '^n\*:\K.*'
    

相关内容