이 출력이 있고 이를 포트별로 숫자순으로 정렬하고 싶습니다(열 35부터 시작).
tcp 0 0 192.168.0.210:110 0.0.0.0:* LISTEN 3385/dovecot
tcp 0 0 192.168.0.210:143 0.0.0.0:* LISTEN 3385/dovecot
tcp 0 0 192.168.0.210:22 0.0.0.0:* LISTEN 2223/sshd
tcp 0 0 192.168.0.210:25 0.0.0.0:* LISTEN 3589/master
tcp 0 0 192.168.0.210:443 0.0.0.0:* LISTEN 2037/apache
tcp 0 0 192.168.0.210:587 0.0.0.0:* LISTEN 3589/master
tcp 0 0 192.168.0.210:80 0.0.0.0:* LISTEN 2037/apache
# ^
# Sorted at this column (#35)
따라서 새 출력은 다음과 같습니다(가장 낮은 포트부터).
tcp 0 0 192.168.0.210:22 0.0.0.0:* LISTEN 2223/sshd
tcp 0 0 192.168.0.210:25 0.0.0.0:* LISTEN 3589/master
tcp 0 0 192.168.0.210:80 0.0.0.0:* LISTEN 2037/apache
tcp 0 0 192.168.0.210:110 0.0.0.0:* LISTEN 3385/dovecot
tcp 0 0 192.168.0.210:143 0.0.0.0:* LISTEN 3385/dovecot
tcp 0 0 192.168.0.210:443 0.0.0.0:* LISTEN 2037/apache
tcp 0 0 192.168.0.210:587 0.0.0.0:* LISTEN 3589/master
# ^
# Sorted at this column (#35)
나는 다음을 |sort
포함하여 모든 다른 형태를 시도했습니다.
|sort -n # <- I thought this would work
|sort -nk35
|sort -nk35,37
등등. 어쩌면 내가 깃발의 목적을 오해한 건 아닐까 -k
? 아니면 그 콜론이 일을 엉망으로 만들었을까요?
답변1
sort
공백으로 구분된 필드는 필수입니다. 포트에서 정렬하려면 필드 구분 기호를 변경해야 합니다.
sort -t: -nk2 file
여기서는 필드 구분자로 sort
이에 대해 이야기하고 있습니다. :
따라서 두 번째 필드의 첫 번째 문자는 포트 번호이며 원하는 방식으로 정렬됩니다.
$ sort -t: -nk2 file
tcp 0 0 192.168.0.210:22 0.0.0.0:* LISTEN 2223/sshd
tcp 0 0 192.168.0.210:25 0.0.0.0:* LISTEN 3589/master
tcp 0 0 192.168.0.210:80 0.0.0.0:* LISTEN 2037/apache
tcp 0 0 192.168.0.210:110 0.0.0.0:* LISTEN 3385/dovecot
tcp 0 0 192.168.0.210:143 0.0.0.0:* LISTEN 3385/dovecot
tcp 0 0 192.168.0.210:443 0.0.0.0:* LISTEN 2037/apache
tcp 0 0 192.168.0.210:587 0.0.0.0:* LISTEN 3589/master