• ベストアンサー

sortコマンドの使い方

hoge234.dat hoge1.dat hoge8.dat hoge12.dat というファイルを作ったのですが、 これを hoge1.dat hoge8.dat hoge12.dat hoge234.dat という順番で読み込んで処理がしたいのですが、 どうすれば並びかえられるでしょうか? sortじゃなくてlsで並び替えれるのでしょうか? タイムスタンプはバラバラです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

#2です。補足です。 #2の2番目の例は、Solaris付属のsortではうまくいかないかもしれません。 (FreeBSD 6.2-RELEASEに入っているsort(GNU版ベースのもの)で確認しました。) 上記環境であれば、(GNU版の)sortだけで出来ました。 -t.(「.」をフィールド区切り) -k1.5,2(第1フィールドの5文字目から第2フィールドの手前までソート比較対象とする。) -n(数値としてソートする。) >ls -1 hoge*.dat | sort -t. -k1.5,2 -n hoge1.dat hoge8.dat hoge12.dat hoge234.dat

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

sortコマンドは、数値ソート(-nオプション)も、 特定のフィールドだけをソート対象とすることも出来るのですが、 「hoge12.dat」形式だと数値を切り出すのが面倒ですね。 あまりかっこいいやりかたではありませんが、 (一旦数字だけ取り出してソートしてからもとに戻す) >ls -1 hoge*.dat | sed -e 's/hoge\(.*\)\.dat/\1/' | sort -n | sed -e 's/.*/hoge&.dat/' hoge1.dat hoge8.dat hoge12.dat hoge234.dat とか。 ちなみに「hoge.12.dat」のように簡単にフィールド分割できるファイル名にすれば sortコマンドで普通にソートできます。 >ls -1 hoge.*.dat | sort -t. -n -k2,3 hoge.1.dat hoge.8.dat hoge.12.dat hoge.234.dat

全文を見る
すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

ちょっと強引かもしれませんが、 ls hoge*.dat | sed 's/hoge\(.*\)\.dat/\1/' | sort -n | awk '{print "hoge" $1 ".dat"}' でできないでしょうか。 Solarisだとawkでなくてnawkじゃないとだめかも。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • bash forコマンドでソート

    bash forコマンドでソート CentOS8 bashの forコマンドで、ディレクトリ内のファイル名を部分指定した降順でソートした状態で順次読み込みしたいです。 <ファイル> aaa.dat bbbb_0001.dat TEST_0001.file TEST_0002.file TEST_0003.file <アウトプット> TEST_0003.file TEST_0002.file TEST_0001.file 基本的な読込と、lsコマンドの結果を基に読み込む方法はわかりましたが、これに降順ソートを加えるにはどうすれば良いでしょうか? <基本的な読込> for file in /dir1/TEST_*.file do echo $file done <lsコマンドの結果を基に読込> for file in $(ls /dir1/TEST_*.file) do echo $file done

  • 複数ファイルから合計&ソートについて

    はじめまして、こんにちわ。 下記の処理がわからなくて困っています(^^; どなたか知恵を貸して頂ければ幸いですm(_ _)m 処理したいのは複数のファイルから合計を出し、数字の大きいものから順番に表示することなのです。 ファイルは各フォルダに同一のファイル名で存在します。 例: ./1/data.dat ./2/data.dat ./3/data.dat といった感じで 各data.datファイルの中身は 例(./1/data.dat): Aさん,56,… Bさん,28,… Cさん,75,… 例(./2/data.dat): Dさん,12,… Eさん,90,… Fさん,100,… といった感じです。 これを数字の大きい人からソートすると F・E・C・A・B・Dさん となるような感じの処理をご教授くださいm(_ _)m

    • ベストアンサー
    • PHP
  • sortコマンドについて

    いつもお世話になっております。 sortコマンドについて質問させて下さい。 現在UNIXコマンドのsortによってファイルをソートしようとしています。 ソート対象となるファイルは下記の通りです。 ファイルの種類:csvファイル ファイルサイズ:80MByte 1レコード長:48Byte レコード数:120万レコード レコード例: 2,1000 ,1,10C0,15,0000000100000000000000000000000000000000 2,1117 ,1,10B0,16,0000000300000000000000000000000100000000 ・ ・ ・ そこで下記のようなコマンドにてソートしています。 sort -t, -k 1,1 -k 2,2 -k 3,3 -k 4,4 < fileA.csv > fileB.csv すると「sort:0653-657ソート中に書込みエラーが発生しました。」と出力され中断してしまいます。 自分なりにsortコマンドについて調べてみたところ、 /usr/tmpディレクトリのファイルシステムがいっぱいになることでコマンドが失敗しているようです。 (一時的にそのディレクトリにソート内容を展開しているようでした) 社内にて/usr/tmpディレクトリのファイルシステムの拡張を求めたところ「できない」と言われてしまいました。 開発の最終段階でのボリュームテストを行ったときの障害でしたので、 処理を大幅に変更するような対処は出来ない状況です。 代替方法などありましたらご教示頂きたいと思います。 以上、宜しくお願い致します。

  • DOSのdirコマンドで思うようにソートされません。

    DOSコマンドで、フォルダ内のファイルリストを作成しようとしているのですが、思うようにソートされずに困っています。 たとえば、image.1.jpg,image.2.jpg,・・・・・image.10.jpg があったときに、"dir /b image.*.jpg > list" とすると、listファイル内では、 image.1.jpg image.10.jpg image.2.jpg image.3.jpg のような順番になってしまいます。 理想的には、以下のようになってほしいのですが。 image.1.jpg image.2.jpg image.3.jpg ・・・・ image.10.jpg UNIXコマンドの場合、"ls image.?.jpg > list", "ls image.??.jpg >> list" 以上のように処理することで、目的を達成できるのですが、 DOS環境で、以上の問題を解決する方法をどなたか教えてください。 宜しくお願いします<(_ _)>

  • c言語 配列 や ソート datファイル読み込みについて

    初投稿でC言語初心者なのでよろしくお願いします。 課題でdatファイルから100万個の数字を読み込んで、ソートのタイムを競うのがでました。 ソートのアルゴリズム等は分かるのですが、100万個の数字を読み込むのがわかりません。 datファイルには、縦にずらっと数字が並べられていてどこを区切り文字としてとりだすのとか。 int配列も100万個も格納できないので3次元配列つかうのかなと思ってみたりしてます。 どうやって格納すればソートで使いやすいかご教授お願いいたします。

  • ソートについて

    以下のデータを先頭の8,45で降順ソートにしたいのですが、どうすればよいのでしょうか? use strict; my @DAT=(); push @DAT, [8, 1, undef]; push @DAT, [45, 2, undef]; また、次の場合も降順ソートさせたいです。 push @DAT, {'ten'=>8, 'cd'=>1, 'memo'=>undef}; push @DAT, {'ten'=>45, 'cd'=>2, 'memo'=>undef};

    • ベストアンサー
    • Perl
  • サイズの大きなテキストファイルのSORT

    3GB超のテキストファイルをSORTコマンドでソートしたいのですが、空(0KB)の出力ファイルが出来て処理が終わってしまいます。 数KB~数MBのテキストでは正常にソートされるのですが、GB単位になると上記の現象が発生します。 環境はWindowsNTServer4.0です。 ソートできるファイルサイズの上限、ディスクの空き容量等、制限があるのでしょうか? また、上記の現象を回避し、正常にソートする方法をご存知な方がいらっしゃいましたら、どうぞご教授ください。 宜しくお願い致します。 ↓ソートコマンドは至ってシンプルです。 sort /+1 < TEST.dat > OUT.txt

  • rmコマンドについて

    rm -r dir_hoge ※dir_hoge = フォルダ名 -- dir_hoge |-- 1.dat `-- 2.dat このような場合 rm: descend into directory 'dir_hoge'? y rm: descend into directory '1.dat'? y rm: descend into directory '2.dat'? y このように、毎回「y/n」の質問をされます。 数千ものファイルがあった場合「y」を1000回おさなければならないのでしょうか? 簡単なものがあれば宜しくお願いします。 目的は「ディレクトリを簡単に削除したい」です。

  • sortコマンドについて

    mako-kwnshともうします。 タブで区切られたテキストファイルの 1番目と4番目の項目の昇順にソートしたいのですが可能なのでしょうか?

  • sortコマンドについて

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