- ベストアンサー
sortコマンドの使い方
一列目はクラス、二列目はテストの点数、三列目は氏名からなるデータ: # data.txt ---------- 1 80 安倍 1 100 小泉 1 90 小沢 2 80 松坂 2 70 松井 2 100 鈴木 ------------- があります。 これを sortコマンドで (1) 1列目昇順 (2) 2列目降順 で並び替えて # data2.txt ---------- 1 100 小泉 1 90 小沢 1 80 安倍 2 100 鈴木 2 80 松坂 2 70 松井 ------------- のように、クラスごとに得点順に並び替えたいと思っています。 sort のオプションは -k が並び替えの基準の列の指定 -r が逆順 -g が数値データ なので cat data | sort -grk2 | sort -k1 としてみましたがうまく行きません。 一つめ「sort -r -k2」でせっかく二列目降順に並び替えているのに、二つめ(右)の sort -k1 でその結果が無くなってしまって 1 100 小泉 1 80 安倍 ← !! 1 90 小沢 ← !! 2 100 鈴木 2 70 松井 ← !! 2 80 松坂 ← !! のようになってしまいます。 どうすればよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
フィールド1を数値昇順にsortし、 さらにフィールド2を数値降順にsortする、 という具合に、man sort の説明通りでいいのでは? cat data.txt | sort -k 1n -k 2nr > cat data | sort -grk2 | sort -k1 は記述がおかしいです。(man sort の説明に沿っていない)
その他の回答 (2)
- notnot
- ベストアンサー率47% (4900/10358)
cat data | sort +0n -1 +1nr -2
お礼
うまく行きました。ちょっとむつかしいですね。。
確認はしてませんが、 sort -grk2,1 でしょうかね
お礼
うまく行きませんでした・・・
お礼
完璧です。 ありがとうございます。