GNU/Linux >> Linux の 問題 >  >> Linux

数文字の長さの区切り文字で並べ替える方法は?

入力:

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

出力:

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

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

例では、a.txt 2番目の列でソートされます。

質問は一般的に、a.txtの数字です 何でもかまいません。

承認された回答:

たとえば、 sed 文字列を1文字の区切り文字に置き換え、列で並べ替えてから、区切り文字を再度置き換えます:

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

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


Linux
  1. 「?」で始まる行を無視してファイルを出力する方法は?

  2. sed で \r 文字を削除する方法

  3. すべてのカーネル リリースと互換性があるように Linux カーネル モジュールをビルドするにはどうすればよいですか?

  1. 無効なエンコードを含むファイルの名前を一括変更する方法、または無効なエンコード文字を一括置換する方法は?

  2. 文字を再帰的にsedに置き換える方法は?

  3. .sh スクリプトで実行する複数の引数を渡す方法

  1. Linuxでの例で「cat」および「tac」コマンドを使用する方法

  2. dmesgで読むメッセージを追加するには?

  3. 長い名前の Linux mv ファイル