Linux - タイトルを保持しながらソート

Linux - タイトルを保持しながらソート

トップヘッダーを維持しながらデータをソートする方法について多くの質問が提起されています。私が見た答えはあまり一般的ではないようです。ファイルベースおよびストリームベースの並べ替えをサポートするのに十分な柔軟性はなく、並べ替えオプションは許可されません。

ああ、これをどのように要約しますか?

答え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
    }
' $@

ソートパラメータが実際にファイルの場合は少し複雑になり、このロジックが強化される可能性があります。全体的にそれは私にうまくいきます..

関連情報