Como capturar o número da porta desta saída 'lsof -F' usando o awk (ou algo melhor)?

2

Eu tenho uma saída de lsof -F que se parece com isso:

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

Estou tentando capturar o valor 51352 , que é uma porta vinculada à qual estou interessado em saber.

Estou perto de conseguir o valor de n*:51352 com isso:

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

e pode realmente obter o valor exato de 51352 com dois awk s separados:

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

mas existe uma maneira melhor, seja um comando único awk ou uma solução mais limpa que não seja awk ?

Deve haver apenas uma linha começando com n* , então não preciso me preocupar em lidar com várias linhas.

    
por Abe Voelker 02.11.2014 / 18:08

2 respostas

4

Combine os dois:

awk -F: '/^n\*:/ {print $2}'
    
por 02.11.2014 / 18:25
3

Outras possibilidades:

  • sed

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

    grep -Po '^n\*:\K.*'
    
por 02.11.2014 / 18:51