ヘッダーを保持する行数の計算

ヘッダーを保持する行数の計算

いくつかのテキスト入力で特定の行の発生数を計算するために一般的に使用されるイディオムは次のとおりです。

… | sort | uniq -c | sort -n

最後の項目は、オプションsort -nで、発生回数に基づいて行をソートするために使用されます。しかし、最近のデータの最初の3行がヘッダであり、それらを並べ替えて計算するときに含めると、読みやすさが大幅に低下する状況に直面しました。

入力の最初の3行だけをソートせずに(countフィールドを説明するために)インデントする最もエレガントな方法は何ですか?

答え1

この質問を書く時点で最良の解決策は次のとおりです。

… | { for i in 1 2 3; do read -r i; printf '        %s\n' "$i"; done;
      sort | uniq -c | sort -n; }

uniq -cしたがって、出力は3行を読み取り、8つのスペースにインデントして印刷するグループにパイプされます(行と区切り文字の数を保持するために使用されるスペースの量を示します)。次に、残りの入力をグループTosortとに渡しますuniq

上記をシェルスクリプトで書くことができるようです。行番号をパラメータとして渡すと、このように使用するたびに再入力する必要はありません。

関連情報