複数の文字長の区切り文字を使用してソートする方法は?

複数の文字長の区切り文字を使用してソートする方法は?

入力する:

$ cat a.txt 
1FOO2FOO3
4FOO5FOO5
2FOO1FOO9
$ 

出力:

$ cat a.txt | sort SOMEMAGIC
2FOO1FOO9
1FOO2FOO3
4FOO5FOO5
$ 

質問:複数の文字長の区切り文字がある場合は、どのように並べ替えますか? (「FOO」)?

例では、a.txt2番目の列に基づいてソートします。

問題は、通常、数字はa.txt何でもよいということです。

ベストアンサー1

sedたとえば、文字列を単一文字の区切り文字に置き換え、列で並べ替えてから区切り文字に置き換えるには、次のようにします。

sed -e s/FOO/X/g a.txt | sort -k 2,2 -t X | sed -e s/X/FOO/g 

これは、入力に文字が表示されないことを知っていると仮定します。制御文字は一般的な候補ですが、入力形式の知識に基づいて選択する必要があります。

おすすめ記事