0

次の形式のフィールドがいくつかあります

apple   banana   blue   xyz=4;pqr=5;mno=3
lemon   banana   red    xyz=2;pqr=6;mno=7
horse   tiger    green  xyz=3;pqr=2;mno=1

出力が次のようになるように、4 番目の列の「pqr」値で並べ替えたいと思います。

horse   tiger    green  xyz=3;pqr=2;mno=1
apple   banana   blue   xyz=4;pqr=5;mno=3
lemon   banana   red    xyz=2;pqr=6;mno=7

私は次のことを試しました:

猫ファイル.txt | sort -key=4.2 、ただし、ソートに2番目の文字が必要なため、機能しません。

4

2 に答える 2

1

これはうまくいくかもしれません。空白と印刷されない文字を無視し、 を使用;してフィールドを分割し、2 番目のフィールドでソートします。

sort -bi -t\; -k2 file.txt
于 2013-01-11T17:04:21.067 に答える
1

セミカラムで区切られたフィールドをタブで区切られたフィールドに分割してみることができます

cat file1 | sed 's/;/;\t/g'

apple   banana   blue   xyz=4;  pqr=5;  mno=3
lemon   banana   red    xyz=2;  pqr=6;  mno=7
horse   tiger    green  xyz=3;  pqr=2;  mno=1

...出力を並べ替えてから、フィールドをマージして戻します

cat file1 | sed 's/;/;\t/g' | sort --key=5 | sed 's/;\t/;/g'

horse   tiger    green  xyz=3;pqr=2;mno=1
apple   banana   blue   xyz=4;pqr=5;mno=3
lemon   banana   red    xyz=2;pqr=6;mno=7

最善の解決策ではありませんが、問題なく動作します。

于 2013-01-11T17:00:01.400 に答える