時にはコンテンツをソートしたいのですが、タイトルはソートしたくない場合があります。たとえば、Apacheにロードされたモジュールを一覧表示すると、ソートに1行のヘッダーが含まれます。
$ /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
==>ファイルの2行目から最後まで印刷してソートします。
別の行でソートしたい場合。コマンドで行番号を変更するだけです。
ご質問がございましたらお知らせください。
答え3
tail -n+3
空行が出力の2行目であると仮定し、3行目でstartを使用することもできます。
$ /usr/local/apache2/bin/apachectl -M | tail -n+3 | sort