awk는 단어 사이의 공백으로 인해 출력을 변경합니다.

awk는 단어 사이의 공백으로 인해 출력을 변경합니다.

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 ;}'

어디

  • 첫 번째 줄은 건너뛰었습니다.
  • 두 번째 줄에서는 필요한 필드를 선택하고 열 크기를 조정합니다.
  • 다른 모든 행의 경우 인쇄 필드가 조정됩니다.
  • 좀 더 명확하게 보기 위해 선을 접었습니다. 물론 한 줄일 수도 있습니다.

관련 정보