2017-03-07 9 views
1
sort -k 2 data.txt 

-kオプションを使用して、比較するフィールドを指定できます。ただし、フィールドは空白で区切られています。区切り文字を空白とコロン「:」を一緒に使うことができるように、コマンドを変更するにはどうすればよいですか?例えばbashで複数の区切り文字を使用するsortコマンド

james:ben tom:jamie 

は、4つのフィールドを有しています。 私data.txtをファイル:

apple:tiger jack 
orange:ant tom 
pear:bird james 

予想される出力:-k 2

orange:ant tom 
pear:bird james 
apple:tiger jack 
+0

あなたの入力と期待される出力を書くことができますか? –

答えて

2

とsortコマンドを使用して、あなたが適切を見つけた場合、私は興味があると思います入力期待

溶液。このような状況のために私の現在の回避策は、ソートのための入力を変更し、その後の変更を元に戻すされています

printf "1:2 3:4\n2:3 4:1\n3:4 1:2\n4:1 2:3\n" | 
    sed 's/:/ :/g' | sort -k 4 | sed 's/ :/:/g' 

あなたはこのようなSTHになります4.出力を通じて1から任意の数に-k後に数を変更することができます(4のために):

2:3 4:1 
3:4 1:2 
4:1 2:3 
1:2 3:4 
+1

あなたは偶数でないかもしれませんが、あなたはシュワルツ変換の古典的な例です。もう少し堅牢な解決方法は、ソートキーを別のフィールド(タブを分けたもの)として抽出し、ソート後に最初のフィールド全体を取り除くことです。 – tripleee

関連する問題