電子書籍の厳選無料作品が豊富!

こんにちは。
ファイルの中身を
記号(。、<>「」など)
A-Z
a-z
あ-ん(「は」のように濁音と半濁音のある音は、はばぱの順)
ア-ン(↑と同様)
漢字(あ-ん同様)
に並べ替えたいのですが、このように条件がつけられるエディタ(無料)は無いでしょうか?
またはプログラム(CまたはPerl)で実装できないでしょうか?

教えていただけると助かります。
よろしくお願いします。

A 回答 (4件)

並べ替える単位は1行ごとの文字コードの大小順であって


お望みの順序とは違うかもですが、
例えば DOS プロンプトにある SORT でソートできます。

コマンドプロンプト または DOS画面で
TYPE INFILE.TXT | SORT > OUTFILE.TXT
または
SORT <INFILE.TXT >OUTFILE.TXT

後者の方が実行時間は早いみたいです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>並べ替える単位は1行ごとの文字コードの大小順であって
>お望みの順序とは違うかもですが、
>例えば DOS プロンプトにある SORT でソートできます。
SORTでやったら、私のやりたかった並び替えを実現することができました!
どうやら文字コード順でよかったみたいです。
ありがとうございました。

お礼日時:2015/01/12 18:01

>Perl自体あまり得意ではないので


 Perlはそれに反して、この手の処理はとても得意です。
 データ自体が分からないとヒントだけになります。
 1GBとなると、そこそこのサイズになりますからすべてを読み込ませて処理するよりは一行ずつ処理するほうが楽でしょう。
 先日回答した「pealを用いたcsvファイルの抽出( http://oshiete.goo.ne.jp/qa/8885727.html )」がヒントになるでしょう。

 open(IN,in.txt);
でファイルハンドルを指定して
 while(<IN>){
正規表現をもちいて、配列の配列に格納
}
で、
(
 (インターネット,TV,2340,行番号)
 (インターネット2,DVD,1450,行番号)
 (インターネット,CD,2560,行番号)
)
できた配列の配列をsort函数を使ってソートして、最終的に行番号だけのリストを作ります。
@LIST = (256,124,5,9845・・)
そしたら、
 while(<@LIST>){
  while(@IN){
  print OUUT;
 }
}
とかで書き出す。
 open(SORTED,in.txt);
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
私のやりたかった並べ替えは文字コード順だったようなので、プログラムを作らなくても一応できるということが分かりましたが、他にも文字列を扱うことが多々あるので、Perlの勉強をしなくてはなと改めて思いました。
ありがとうございました。

お礼日時:2015/01/12 18:07

エディタは文章を書いたり編集したりするプログラムですから、



> ~に並べ替えたいのですが、

なんて事をすれば、まともな【文章】になりません。
まともなエディタならそういう機能は持たないでしょう。
例えば、質問文を並べ替えると、

-----ここから-----
A-Z
a-z
あ-ん(「は」のように濁音と半濁音のある音は、はばぱの順)
ア-ン(↑と同様)
こんにちは。
に並べ替えたいのですが、このように条件がつけられるエディタ(無料)は無いでしょうか?
ファイルの中身を
またはプログラム(CまたはPerl)で実装できないでしょうか?
よろしくお願いします。
漢字(あ-ん同様)
記号(。、<>「」など)
教えていただけると助かります。
-----ここまで-----

とか。

プログラムも作れるでしょうが、Excelなんかにコピペして並べ替えるのが簡単だと思います。

この回答への補足

回答ありがとうございます。
確かに言われてみればそうですよね・・・。

Excelでもできるのですね。
ただ、並び替えたいもののデータ量がかなり大きい(1G近くある)ことと、下の方の補足でも書いたように、1行の中に半角スペースやtab文字も入っているのですが、Excelでも大丈夫でしょうか?

補足日時:2015/01/12 09:59
    • good
    • 0

>ファイルの中身を


 どのようなフォーマットのファイルか分かりませんが、Perlなどテキスト処理を得意とする言語で良いです。

この回答への補足

ファイルの中身は、例えばですが
インターネット+インターネット+2(半角スペース)TV+テレビ+2,-3.2929
のように、数字や半角スペース、(上の例にはないですが)tab文字のあるデータです。
Perl自体あまり得意ではないので実装方法も教えて頂けると非常に助かります。

補足日時:2015/01/12 09:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!