降順ではなく逆順にファイルリストを並べ替えるにはどうすればよいですか? sort -rは私が望むことをしません

降順ではなく逆順にファイルリストを並べ替えるにはどうすればよいですか? sort -rは私が望むことをしません

次のコマンドがあります

cat filename 

出力:

0040
0042
0048
0043

これにより、cat filename | sort -r出力は次のようになります。

0048
0043
0042
0040

私はそれをしたくありません。逆順ではなく降順でソートされているようです。

私は次のような出力が欲しい(実際には逆順)

0043
0048
0042
0040

どうすればいいですか?

答え1

ファイルを元に戻すには、次のようにします。tac:

tac filename

sort -r逆順に並べ替えられないので、好きなようには行われません。したがって、数字は降順で表示されます。デフォルトのソートは辞書の順序なので、ここでは数字と考えてはいけません。 )。

答え2

あなたは本当に使用する必要がありますtacしかし、あなたはできるsort -r各行に一意の番号プレフィックスを追加して番号で並べ替える場合は、これを行うために使用されます。その後、行番号を再カットする必要があります。

cat filename | nl | sort -n -r | cut -f 2-

これはすべての入力に対しては機能しません。nl空白行はスキップされ、文字列のみを含む行で区切られた「セクション」も検索されます\:-ba空行を処理するには、を使用し-d XZ、1行に単独で表示されない2文字のシーケンスでセクション区切り文字を変更するには、を使用する必要があります。

答え3

私は検索中に動作する2つの答えを見つけました。 1つはtac最後に使用され、もう1つはawk私が理解していないステートメントでした!

答え1:cat filename | tac

答え2:cat filename | awk '{arr[i++]=$0} END {while (i>0) print arr[--i] }'

sort -rなぜ動作しないのだろうか? ...

関連情報