제목을 제외한 모든 항목 정렬 [중복]

제목을 제외한 모든 항목 정렬 [중복]

때로는 내용을 정렬하고 싶지만 제목은 정렬하고 싶지 않을 때가 있습니다. 예를 들어 Apache에 로드된 모듈을 나열하면 정렬에 한 줄 헤더가 포함됩니다.

 $ /usr/local/apache2/bin/apachectl -M | sort

 alias_module (shared)
 asis_module (static)
 cache_disk_module (static)
 cache_module (static)
 core_module (static)
 data_module (static)
 env_module (shared)
 ext_filter_module (static)
 file_cache_module (static)
 filter_module (shared)
 headers_module (shared)
 heartbeat_module (static)
 heartmonitor_module (static)
 http_module (static)
 include_module (static)
 info_module (static)
Loaded Modules:
 log_config_module (shared)
 macro_module (static)
 mime_module (shared)
 mpm_event_module (static)
 ratelimit_module (static)
 reqtimeout_module (shared)
 setenvif_module (shared)
 so_module (static)
 ssl_module (static)
 status_module (shared)
 substitute_module (static)
 unixd_module (static)
 version_module (shared)
 watchdog_module (static)

-b 옵션을 사용해 보았지만 아무런 효과가 없었습니다. 그럼에도 불구하고 선행 공백을 무시하는 것은 해결 방법일 뿐입니다. 내가 정말로 원하는 것은 N 행의 헤더를 정렬에서 제외하는 것입니다. 어떻게 해야 하나요?

답변1

나는 head에 숫자 인수를 사용하여 이 작업을 수행할 수 있음을 발견했습니다. 헤더를 제외한 나머지 줄은 여전히 ​​표준 출력으로 전달되므로 sort는 나머지 줄을 받을 수 있습니다.

$ /usr/local/apache2/bin/apachectl -M | { head -1; sort; }

head 뒤에 원하는 만큼 많은 헤더 행을 배치합니다(여기서는 1).

답변2

sed -n '1p' filename;sed -r "s/\s+//g" l.txt| sed '/^$/d' | sed -n '1!p'  | sort -n

sed -n '1p' filename==>이 명령은 제목 행을 먼저 표시합니다.

sed -r "s/\s+//g" l.txt| sed '/^$/d' | sed -n '1!p' | sort -n==>파일의 두 번째 줄부터 끝까지 인쇄하고 정렬합니다.

다른 행에서 정렬하려는 경우. 명령에서 줄 번호만 변경하면 됩니다.

질문이 있으시면 알려주시기 바랍니다.

답변3

tail -n+3빈 줄이 출력의 두 번째 줄이라고 가정하고 세 번째 줄에서 start를 사용할 수도 있습니다 .

$ /usr/local/apache2/bin/apachectl -M | tail -n+3 | sort

관련 정보