![awk(또는 더 나은 기능)를 사용하여 이 lsof -F 출력에서 포트 번호를 어떻게 캡처할 수 있습니까?](https://linux55.com/image/58714/awk(%EB%98%90%EB%8A%94%20%EB%8D%94%20%EB%82%98%EC%9D%80%20%EA%B8%B0%EB%8A%A5)%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9D%B4%20lsof%20-F%20%EC%B6%9C%EB%A0%A5%EC%97%90%EC%84%9C%20%E2%80%8B%E2%80%8B%ED%8F%AC%ED%8A%B8%20%EB%B2%88%ED%98%B8%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%BA%A1%EC%B2%98%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
내가 얻는 출력은 다음과 같습니다 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.*'