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

51352나는 이해하고 싶은 바운드 포트인 value 를 캡처하려고 합니다 .

나는 가까이에 있습니다. 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.*'
    

관련 정보