때로는 내용을 정렬하고 싶지만 제목은 정렬하고 싶지 않을 때가 있습니다. 예를 들어 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