トップヘッダーを維持しながらデータをソートする方法について多くの質問が提起されています。私が見た答えはあまり一般的ではないようです。ファイルベースおよびストリームベースの並べ替えをサポートするのに十分な柔軟性はなく、並べ替えオプションは許可されません。
ああ、これをどのように要約しますか?
答え1
これは標準入力として提供されているすべてをソートします。
perl -e 'print scalar <>, sort <>;'
例:
# echo -e "Heading\n2\n1"|perl -e 'print scalar <>, sort <>;'
Heading
1
2
ファイルをソートするには、次のように入力します。
echo -e "Heading\n2\n1" >/tmp/test
</tmp/test perl -e 'print scalar <>, sort <>;'
注意すべき唯一のことは、ファイルを所定の位置に配置することです。
答え2
この問題を解決する小さなスクリプトは次のとおりです。
#!/bin/bash
ARGS=()
while (( $# > 0 )) ; do
[[ -f "$1" ]] && break
ARGS+=( "$1" )
shift
done
awk -v SORT_ARGS="${ARGS[*]}" '
( NR == 1 ) {
print
next
}
{
print | "sort " SORT_ARGS
}
' $@
ソートパラメータが実際にファイルの場合は少し複雑になり、このロジックが強化される可能性があります。全体的にそれは私にうまくいきます..