次のコマンドがあります
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
なぜ動作しないのだろうか? ...