質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Q&A

解決済

2回答

1696閲覧

bash_sortコマンドで10列目をソートしたいです

DrqYuto

総合スコア432

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

0グッド

0クリップ

投稿2019/12/15 13:45

AOJの結果を最短でソートしたいです.

AIZU ONLINE JUDGE: Solution http://judge.u-aizu.ac.jp/onlinejudge/solution.jsp?pid=ITP1_3_C "# Run# Author Rating Date Language Version Server Time Code 1 1106108 yudedako 2318.99 2014-10-24 02:30 Ruby 2.0.0 #3 00:03 142 byte 2 1831608 Darsein 1259.72 2016-05-30 19:34 Ruby 2.2.2 #6 00:05 120 byte 3 1624385 E869120 1017.91 2015-12-26 11:58 Ruby 2.2.2 #6 00:05 120 byte 4 1260987 hec 645.44 2015-03-25 21:27 Ruby 2.0.0 #3 00:02 98 byte 5 590414 leafmoon 515.41 2013-03-04 02:37 Ruby 1.8.7 #3 00:03 73 byte 6 1452713 QtaroKujo 477.42 2015-07-21 03:18 Ruby 2.0.0 #3 00:03 78 byte 7 1540799 kankichi 437.20 2015-10-08 09:46 Ruby 2.2.2 #6 00:05 177 byte 8 1742011 khagiwara 190.51 2016-04-17 22:45 Ruby 2.2.2 #6 00:06 95 byte 9 933269 kachan 151.71 2014-04-29 18:17 Ruby 2.0.0 #3 00:02 187 byte 10 2023413 Yoshimura 140.01 2016-10-07 20:29 Ruby 2.2.2 #6 00:05 103 byte 11 2688482 madman6 104.93 2018-01-25 13:21 Ruby 2.4.0 #9 00:05 217 byte 12 1113302 giguru 102.40 2014-11-01 00:35 Ruby 2.0.0 #3 00:02 ...gaishun 0.00 2014-04-12 09:19 Ruby 2.0.0 #3 00:02 148 byte 236 3851132 na10shi 0.00 2019-09-06 00:12 Ruby 2.4.0 #9 00:05 113 byte 237 2764078 iKatsudon 0.00 2018-04-06 15:58 Ruby 2.4.0 #9 00:05 298 byte 238 1736687 lotus__se 0.00 2016-04-15 11:03 Ruby 2.2.2 #6 00:04 217 byte 239 3434940 i_dentikit 0.00 2019-03-20 02:00 Ruby 2.4.0 #9 00:05 203 byte 240 1774879 kensr0816 0.00 2016-05-02 16:49 Ruby 2.2.2 #6 00:05 108 byte 241 3164420 shirouxx 0.00 2018-10-01 20:15 Ruby 2.4.0 #9 00:05 97 byte 242 1381561 hachi 0.00 2015-06-04 18:00 Ruby 2.0.0 #3 00:02 150 byte 243 1644301 sakanakana 0.00 2016-01-18 23:49 Ruby 2.2.2 #6 00:04 308 byte 244 1106031 yukiyan_w 0.00 2014-10-23 23:47 Ruby 2.0.0 #3 00:02 371 byte 245 3230589 suneosama7 0.00 2018-11-09 22:14 Ruby 2.4.0 #9 00:05 183 byte 246 1665213 dracen 0.00 2016-02-08 01:50 Ruby 2.2.2 #6 00:07 349 byte 247 3066792 popping 0.00 2018-07-30 17:35 Ruby 2.4.0 #9 00:05 107 byte 248 3329409 sumiya112 0.00 2019-01-09 19:42 Ruby 2.4.0 #9 00:05 134 byte"

考えたコードです.

tr -d byte | sort -n -k 10

末尾に" byte"が入ってるとソートがうまくいかないことは確認したのでtr -d でbyte を消しました(そうするとCodeからもeが消されてしまいましたが,これはソートとは関係なさそうです).

man sortを見ると -k 列目で指定することが分かったので,10列目でソートしたのですが1行目に51がでませんでした.

Paiza.ioの結果

(Bash) | ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO https://paiza.io/projects/mo3DvUHn7qZMJIQ4_hBCOQ "100 1328480 namakakwo 1.60 2015-04-30 15:29 Ru 2.0.0 #3 00:02 166 101 2142995 sagami34 1.60 2016-12-31 17:14 Ru 2.2.2 #6 00:04 148 10 2023413 Yoshimura 140.01 2016-10-07 20:29 Ru 2.2.2 #6 00:05 103 102 1319759 sakanasuki 1.60 2015-04-26 14:19 Ru 2.0.0 #3 00:02 164 103 1497935 _koga 1.60 2015-08-31 00:30 Ru 2.2.2 #6 00:04 147 104 3058968 shira7867 1.37 2018-07-27 01:13 Ru 2.4.0 #9 00:06 101 105 3197646 furukaha 1.28 2018-10-20 15:01 Ru 2.4.0 #9 00:05 105 106 1650326 Takashina 1.28 2016-01-24 19:06 Ru 2.2.2 #6 00:04 147 107 2359942 oshimasa36g 1.28 2017-06-08 16:26 Ru 2.2.2 #6 00:05 360 108 4019640 v4r4 1.22 2019-12-02 21:08 Ru 2.4.0 #9 00:05 178 109 1086714 hig3po 0.98 2014-10-01 16:11 Ru 2.0.0 #3 00:02 113 110 1441422 homomaid 0.96 2015-07-11 16:14 Ru 2.0.0 #3 00:02 143 1 1106108 uddako 2318.99 2014-10-24 02:30 Ru 2.0.0 #3 00:03 142 111 2283482 k 0.96 2017-04-26 10:52 Ru 2.... susui_s 2.88 2019-05-24 23:49 Ru 2.4.0 #9 00:05 87 87 2373821 amacha 2.56 2017-06-16 08:08 Ru 2.2.2 #6 00:05 120 88 1352896 s1220073 2.56 2015-05-17 05:32 Ru 2.0.0 #3 00:02 143 89 1162217 do0623 2.56 2014-12-18 16:02 Ru 2.0.0 #3 00:02 147 90 1079159 wha_alnk 2.56 2014-09-23 15:26 Ru 2.0.0 #3 00:03 139 91 2196399 chd1 2.40 2017-02-22 18:40 Ru 2.2.2 #6 00:04 167 92 2482282 hashimoo 2.34 2017-08-09 09:42 Ru 2.2.2 #6 00:05 153 93 2128802 simpl3 2.24 2016-12-18 21:56 Ru 2.2.2 #6 00:04 335 94 3082306 fuga408 2.24 2018-08-08 16:38 Ru 2.4.0 #9 00:05 106 95 2612840 anachu 2.08 2017-11-19 21:41 Ru 2.2.2 #6 00:07 256 96 1621575 Ho 1.92 2015-12-23 01:35 Ru 2.2.2 #6 00:05 79 97 1462668 Elis0317 1.92 2015-07-31 16:11 Ru 2.0.0 #3 00:02 240 98 1430167 john999 1.92 2015-07-04 18:00 Ru 2.0.0 #3 00:02 79 99 2348861 JCloud_h_Ac 1.60 2017-06-01 15:02 Ru 2.2.2 #6 00:05 166 9 933269 kachan 151.71 2014-04-29 18:17 Ru 2.0.0 #3 00:02 187 # Run# Auhor Raing Da Languag Vrsion Srvr Tim Cod"

参考
sortコマンドで指定した列で数字順で並び替える(桁区切りの数字も可能) - Qiita
https://qiita.com/d-dai/items/b261fc8483d0cdeccb58
"sort -r -n -k 2,2 ファイル名"

Man page of SORT
https://linuxjm.osdn.jp/html/gnumaniak/man1/sort.1.html
"アルファベット順にソートし、第 1・第 2 フィールドは無視する。 キーに開始フィールドとなる 3 だけを指定すれば、各行末までが比較される。

sort -k3"

Linuxコマンド【 tr 】文字の変換や削除 - Linux入門 - Webkaru
https://webkaru.net/linux/tr-command/
"指定した文字列(ここでは、123)を削除します(オプション -d)。

$ cat hoge.txt | tr -d 123"

よろしくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

AOJの結果を最短でソートしたいです.

TIME欄で昇順にソートするという意味ですよね?

-nオプションは数値とみなせる文字列を、数値とみなして比較するとうオプションですが、00:02とかは数値とみなせない文字列(:があるので)なので駄目です。
これは、分:秒ですかね?1時間未満なら、そのまま文字列として比較すればいいです。
つまり、-nなしの、sort -k 10,10で。

TIMEが同じ時に、バイト数順にするには、sort -k 10,10 -k 11,11nで。

質問の本筋とは関係ないですが、

Linuxコマンド【 tr 】文字の変換や削除 - Linux入門 - Webkaru

https://webkaru.net/linux/tr-command/
"指定した文字列(ここでは、123)を削除します(オプション -d)。

これはひどい間違いですね。tr -d 123は、123という文字列を削除するのではありません。1という文字と2という文字と3という文字を削除します。
ページを見ると、この人は分かっているのに書き方がおかしいのか、この人自身も分かっていないのか不明。
文字列の削除はsedを使います。

コマンドの基本機能は、manを見ましょう。

a b

投稿2019/12/15 14:48

編集2019/12/15 15:14
otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/12/15 15:09

> まさかと思い空白行を削除したら,できました 空白行じゃなくて空白ですよね? 質問のデータは、各列が空白4つで区切られていますが、空白を削除しても結果に空白が残っている?? もしかして、元データにはタブ文字があって、質問にコピペする際にタブを空白に変換してからコピペしているんですか?
otn

2019/12/15 15:18

失礼しました。コードブロックにタブをコピペして、コードブロックの右上のボタンでコピーすると、タブが空白4つに変わりますね。DrqYutoさんのせいじゃなくて、サイトのせいですね。 空白を削除しなくても、-b オプションを付ければいいかと思います。
DrqYuto

2019/12/16 13:07

空白でした.-bオプション勉強します.ありがとうございます.
guest

0

自己解決

まさかと思い空白行を削除したら,できました.

tr -d byte| tr -d " "|sort -n -k 10

結果

#Run# Auhor Raing Da Languag Vrsion Srvr Tim Cod 33 1094810 lsion_halcon 22.18 2014-10-1118:29 Ru 2.0.0 #3 00:02 50 12 1113302 giguru 102.40 2014-11-0100:35 Ru 2.0.0 #3 00:02 51 (10000文字以内でということなので略) 23 1757700 muz 38.91 2016-04-2311:58 Ru 2.2.2 #6 00:04 2027

参考
trコマンドで空白文字を削除 | OpenGroove
https://open-groove.net/linux-command/tr-edit-files/
"例えばファイル内の空白文字を削除したい場合、以下のように。

$ tr -d ' ' < sample.txt > new_sample.txt"

投稿2019/12/15 14:17

DrqYuto

総合スコア432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DrqYuto

2019/12/16 13:42

byteを削除しなくともsortできたので,最短Codeが出せました. ``` tr -d " "|sort -n -k 10 ``` 空白4つではなくとも空白1つ削除でもできました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問