• 締切済み

sortコマンドについて

ファイルaaaについて、 第1ソートキーを第1列目で数値順に 第2ソートキーを第2列目でアルファベット順に ソートした結果をbbbに出力したいと思います。 sort -n -k 1,1 -d -k 2,2 aaa > bbb としたところ、正しい結果が得られませんでした。 どのようにしたら良いのか教えて下さい。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

sort -k 1.1n -k2.2d aaa

関連するQ&A

  • sortコマンドのオプションなどの意味

    シェルスクリプトに次のようなsortコマンドが出てきました。 sort -t, /export/home1/aaa -u -k 1 -o $CSV_OUTFILE/$OUTPUT_FILE \     $CSV_OUTFILE/$INPUT_FILE_AAA $CSV_OUTFILE/$INPUT_FILE_BBB (aaaとAAAとBBBは変えていますが、あとはまったくもとのままです。) 行の最後の\は行継続の意味でよろしいでしょうか。 -t の直後に "," (カンマ) がありますが、これは「(空白区切りではなくて)カンマ区切り」という意味でよろしいですか。 (-tとカンマの間に空白は要らないのでしょうか。カンマはシングルクォーテーションで囲まなくてよいのでしょうか。) /export/home1/aaa というディレクトリの指定がありますが、これはなんのためでしょうか。 -u は同一行は重ねて出力しないという意味でよろしいでしょうか。 (キーが同じ行は重ねて出力しないという意味ではないですよね?) -k 1 の意味がわかりません。(ソートするキーの指定?) インプットファイルの指定と思われるものが2つありますが、入力ファイルは複数でも構わないのでしょうか? 以上ですが、わかるものだけでも結構です。 よろしくお願いします。

  • sortコマンドについて

    33 333 22 33 333 33 33 333 11 33 222 11 33 111 11 44 111 11 44 222 11 11 111 11 11 222 11 上記のファイルを以下のようにソートしたいのですが どのようにすればよいでしょうか? 第一ソートキー 1~2番目の昇順 第二ソートキー 4~6番目の降順 第三ソートキー 8~9番目の昇順 (ちなみにspaceはたまたまspaceで区切り文字ではありません) 11 222 11 11 111 11 33 333 11 33 333 22 33 333 33 33 222 11 33 111 11 44 222 11 44 111 11 以下の試して見ましたがうまくいきませんでした。 sort -k 1.1,1.2 -r -k 1.4,1.6 -k 1.8,1.9 test.txt 宜しくお願い致します。

  • 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 松坂 ← !! のようになってしまいます。 どうすればよいでしょうか?

  • 2つの列を合わせてソートしたい。

    2つの列を合わせてソートしたい。 table名:test 【name】 【area】 【ground】 【bldg】  aaa    3    65.12   84.94  bbb    1    24.6    35.14  ccc    3    112.58  114.5  ddd    2    54     83.14  eee    4    89.25   41  fff     3    74.5    99.10 「ground」と「bldg」はfloat型で、整数と小数点の数値が入っています。 やりたいことは「ground」と「bldg」の2つの列で数値が大きい順でソートしたい。 SELECT * FROM `test` ORDER BY `ground` DESC,`bldg` DESC; こうすると、当たり前な話ですが、「ground」でソートされた後に「bldg」でソートされてしまいます。 そうではなくて、「ground」と「bldg」を合わせて、ソートしたいのです。 【求める実行結果】 【name】 【area】 【ground】 【bldg】  ccc    3    112.58  114.5  fff     3    74.5    99.10  eee    4    89.25   41  aaa    3    65.12   84.94  ddd    2    54     83.14  bbb    1    24.6    35.14 色々と試してみましたが、うまくいかず前に進まない状態です。 何かいい解決法をご存知の方がいらっしゃいましたらご教授お願い致します。

    • ベストアンサー
    • MySQL
  • ファイルの結合

    UNIX上で下記のようなfileA、fileBから fileA aaa,aaa,222 aaa,bbb,111 aaa,ccc,333 fileB aaa,aaa,111 aaa,bbb,222 aaa,ccc,333 aaa,ddd,999 下記のようなfileCを作ろうとしています。 fileC aaa,aaa,222 aaa,bbb,111 aaa,ccc,333 aaa,ddd,999 そこで、以下のように一列目と2列目をキーにして、sortすることにしました。 cat fileA fileB | sort -u -k1,2 -t, > fileC すると、fileCは下記のようになりました。(一行目の3列目が222ではなく、111になってしまいました) fileC aaa,aaa,111 aaa,bbb,222 aaa,ccc,333 aaa,ddd,999 キー項目以外はfileAを優先させたいのですが、なにか良い方法はないでしょうか?

  • treeコマンドでソートできませんか?

     コマンドプロンプトのtreeコマンドで、ディレクトリ名順、ファイル順にソートして出力することはできますか?  “| sort”を使ってみましたが、どうもうまくできませんでしたので。よろしくお願いします。

  • ある項目(数値)に加算したものでソートしたい。

    ある項目(数値)に加算したものでソートしたい。 下のようなテーブルがあります。 そのpointに加算した結果でソートしたいのですが、可能でしょうか? テーブル name  | point ああAAA| 100 ああBBB| 400 いいCCC| 300 ううDDD | 200 おおCCC| 500 ============== ふつうにORDER BY point DESC でソートすると下記のようになります。 おおCCC| 500 ああBBB| 400 いいCCC| 300 ううDDD | 200 ああAAA| 100 ============== そこでpointに加算した結果(dbには反映させず、あくまで表示上のみ) name[ *CCC]にはpointに80%加算 いいCCC 300→540 おおCCC 500→900 ソート結果 おおCCC| 900 いいCCC| 540 ああBBB| 400 ううDDD | 200 ああAAA| 100 ============== このような事は可能でしょうか?

  • エクセルでのソート

    エクセル2000を使っています、ソートについて質問させていただきます。 例えば、 88J001・・・88J055 88N001・・・88N011 88A001・・・88A0088 8K001・・・88K020と有る名簿を(上から下に並んでいます)、 左から3文字目に有るアルファベットを最優先キーに、数字3桁を2番目に優先するキーにし、アルファベット順ではなく、K、N、J、A、Hと有るようにソートしたいのですが、どのような操作をすればよろしいでしょうか?

  • unix uniqコマンドについて

    aaaファイルに 日付<tab>名前(2012/01/01<tab>あいう)が何行も記載されています。 同じ日付、名前のものの重複カウントをしたいと考え、 % sort aaa | uniq -c > bbb としたのですが、 一部 まとまっていない行がありました。 bbbファイル(3行目、4行目が重複数値にみえる) 10 2012/01/01<tab>あいう 1 2012/01/01<tab>かきく 1 2012/01/02<tab>あいうえ 1 2012/01/02<tab>あいうえ 3 2012/01/02<tab>かきく ・・・ どうしてこうなるのでしょうか? また、どのようにしたら、きれいに計算されるのでしょうか?教えてください。

  • コマンドについて

    初心者でコマンドを勉強しています。質問させてください。 Dドライブ直下にaaaフォルダとbbbフォルダを作りbbbフォルダの中にはccc.txtが入っています。 bbbをフォルダごとaaaに移動させようとしてコマンドでD:\>move bbb \aaa という風にaaaの前に「\」付けてしまいました。・・・がしかし上手く 移動され、aaaの中にbbbが入りました。  これをD直下では無く、Dの中のtestフォルダの中に、同じようにaaaフォルダ、bbbフォルダ(中にはccc.txt)を作り、D:\>move bbb \aaa とやってみると・・aaaには移らず、D直下に新たにaaaフォルダが作成され、その中にccc.txtだけが移ってしまいました。 bbbは消え去りました。 なぜこういう違いがでるのでしょうか。 初心者ですみませんがよろしくお願いいたします。

専門家に質問してみよう