Combine os dois:
awk -F: '/^n\*:/ {print $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.
Outras possibilidades:
sed
sed -n 's/^n\*:\(.*\)//p'
grep
grep -Po '^n\*:\K.*'