カスタムパターンで並べ替えますか?

カスタムパターンで並べ替えますか?

az に基づいて並べ替えるのではなく、発生に基づいて並べ替えることは可能ですか?

希望するタスクの例、

入力 =

Example
Example
Hello
Hello
Input
Input
List
List
World
World
...

望ましい出力 =

Example
Hello
Input
List
World
Example
Hello
Input
List
World
...

このシナリオでは、各行の最初の出現を取得して順序付けし、次に各行の2番目の出現を取得して、出現がなくなるまで順序付けします。

答え1

常に、装飾 - 並べ替え - 装飾解除のアプローチを使用できます。

<input awk -v OFS=: '{print ++n[$0], $0}' |
  sort -t: -k1,1n -k2 |
  cut -d: -f2-

awk各行の先頭に、行の出現を番号として付加し、sortそれを最初のキー (数値順) として並べ替えますk。また、元の行を 2 番目のキー (デフォルトのロケール照合順序) として並べ替えます。

ここで、のデフォルトの SPC:の代わりに を区切り文字として使用し、のデフォルトの非空白から空白への遷移をそのデフォルトと同様に行うと、SPC が 2 番目のキーに含まれることになり、ソートに影響を与える可能性があります (可能性は低いです)。awksort

関連情報