awk는 단어 사이의 공백으로 인해 출력을 변경합니다.
예: "로컬 주소"는 awk
각각 로컬과 주소를 고려합니다.
# netstat -antulp | awk 'NR>1'
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1115/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1397/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1271/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1473/master
tcp 0 0 0.0.0.0:55547 0.0.0.0:* LISTEN 1133/rpc.statd
출력은 다음과 같아야 합니다.$4 $5 $6
Local Address Foreign Address PID/Program name
0.0.0.0:111 0.0.0.0:* 1115/rpcbind
0.0.0.0:22 0.0.0.0:* 1397/sshd
127.0.0.1:631 0.0.0.0:* 1271/cupsd
127.0.0.1:25 0.0.0.0:* 1473/master
0.0.0.0:55547 0.0.0.0:* 1133/rpc.statd
답변1
awk 매뉴얼에서:
awk 유틸리티는 각 입력 레코드를 일련의 필드로 해석해야 하며, 기본적으로 필드는 문자열이 아닙니다.공백아니요새로운 팀수치. 이 기본값공백그리고새로운 팀필드 구분 기호는 FS 내장 변수 또는 -F sepstring 옵션을 사용하여 변경할 수 있습니다.
"-F" 옵션을 사용하거나 awk 코드에서 FS 옵션을 설정하여 동작을 변경할 수 있습니다.
awk 'BEGIN{FS="\t"} {print $1 $2 $3}'
netstat가 어떻게 출력하는지에 관해서는 대답할 수 없습니다. :)
답변2
노력하다
netstat -antulp |\
awk 'NR == 1 { skip }
NR == 2 { printf "%s %-19s\t%s %-18s\t%s %s\n",$4,$5,$6,$7,$9,$10}
NR > 2 { printf "%-24ss\t%-24ss\t%s\n",$4,$5,$6 ;}'
어디
- 첫 번째 줄은 건너뛰었습니다.
- 두 번째 줄에서는 필요한 필드를 선택하고 열 크기를 조정합니다.
- 다른 모든 행의 경우 인쇄 필드가 조정됩니다.
- 좀 더 명확하게 보기 위해 선을 접었습니다. 물론 한 줄일 수도 있습니다.