의 출력에서 다음을 어떻게 추출할 수 있습니까 netstat -anp
?
- IP 주소 삭제
- 원격 포트
- 로컬 애플리케이션 이름
- 로컬 포트
- PID
내 conky에서 실행하려면 이 정보가 필요합니다. PID 번호의 마지막 숫자가 누락된 것을 제외하고 모든 것이 표시됩니다. 명령 을 이해하지 못합니다 sed
. 도와주세요.
명령은 다음과 같습니다.
netstat -anp | grep 'ESTABLISHED' | sed -r 's|.*192.[0-9.]+:([0-9]*)\s*([0-9.]+):([0-9]+)[^ESTABLISHED]+\ESTABLISHED ([0-9]*)[^/]+/([a-zA-Z0-9-]*)|\5 \2 \1 \3 \4|' | awk '{printf("%-14s %-15s %8s %6s %8s\n",$1,$2,$3,$4,$5)}'
올바른 명령 출력을 표시하려면 설정된 연결(예: Firefox 사용)을 열어야 합니다.
답변1
문제는 sed 패턴의 이 부분에 있습니다.
([0-9]*)[^/]+/
0..9까지 임의의 숫자를 캡처한 다음 슬래시 "/"가 아닌 문자 1개 이상, "/"를 캡처합니다. 이것은 문자열과 일치시키려고 합니다.
ESTABLISHED 2783/firefox
처음에는 와 일치 2783
하지만 일치하려면 마지막 숫자 3을 제거해야 합니다.슬래시가 아님.
해결 방법은 0 일치를 허용하도록 +
a로 바꾸는 것입니다 .*
([0-9]*)[^/]*/