• 締切済み

Rubyによるテキスト変換について

プログラムはあまり判りませんので、内容が不適切な場合には、ご容赦ください。 やりたいことは、複数のテキストを一括でリストに基づいて置換することをやりたいと思っております。 フリーのソフトを使えばっと言われるかも知れませんが、WindowsでもMacintoshでも同じようなことをやりたいと思っています。環境に問わない変換がしたいので。。。 Windowsでのイメージは、 テキストをBATファイルなどにドラッグすると、テキストが置換されるイメージです。 テキストは上書きされずに、同階層に「変換済」のフォルダを作成するか、テキストのファイル名を変更するなどが出来ればベストです。 同様に、Macintoshでも同様に動きが出来ればと思っております。 リストなどは「Windows」「Macintosh」の両方で共用したいので、 サーバに置いておいての運用をしたいと思っております。 変換は「gsub」で記述したいと思っております。 あまり素人的な内容で大変申し訳ないのですが、 何卒、よろしくお願いします。

  • efcs
  • お礼率9% (2/21)
  • Ruby
  • 回答数2
  • ありがとう数1

みんなの回答

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

Windowsの場合、BATファイルにドロップすると、バッチスクリプトの中で、%1 %2 とか %* で参照できます。 ケース1: バッチファイルと別にRubyスクリプトのファイルを分ける場合 BATでは、 @ruby "Rubyスクリプトファイル名" %* とかくと、Rubyからは、ARGV[0], ARGV[1], ・・・ で参照できます。 ケース2: バッチファイルの中にRubyスクリプトを埋め込む場合 バッチファイルに、 @echo off ruby -x "%~f0" %*    ← -x をつけることで#!rubyまでの部分をスキップする goto :EOF #! ruby ARGV.each do |file| open(file+".output","w") do |out| IO.foreach(file) do |line| out.puts line.gsub(/aaaa/,"bbbbb") end end end とか。 BATを使わない別案: expolorerでショートカットを作り、リンク先を ruby.exe "Rubyスクリプトファイル名" または、 rubyw.exe "Rubyスクリプトファイル名" にする。BATファイルを使わないので、rubyでなくrubywを使うとコマンドプロンプトウィンドウが開きません。 いずれも、ruby.exeにパスが通ってなければフルパスで書いてください。

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

Macintoshの場合だけを回答しておきます。 私は似たようなことをやっております。 Macに標準でついているAutometorという自動化を助けてくれるソフトがあります。 その中の「シェルスクリプトを実行」というアクションを使っています。これはシェルスクリプトだけではなく、Rubyなどのスクリプトも直接実行できます。 スクリプトへの引数は、ARGV[0], ARGV[1] ...にドラッグしたファイルの絶対パスが入れられますので、Ruby側でそれを見て処理すれば良いわけです。 input_files=ARGV input_files.each do |input_file| のような感じでです。これで複数のファイルにも対応できます。 特別なことをやっているわけではないので、スクリプト自体は他のコンピュータでも変更なしで動くと思いますが、 実際には、Autometorを起動し、「シェルスクリプトを実行」のアクションを作り、その中にRubyスクリプトを入れアプリケーションとして保存する。それだけです。 できたアプリケーションにファイルをドラッグするとスクリプトが実行されます。

関連するQ&A

  • 【至急】Rubyによるテキスト変換について

    現在、大量のテキストを変換する業務がありまして、 これをRubyで一括処理するよう上司の方から言われております。 Rubyというプログラムをあまり理解できていない中での作業となり、 全く分からないことも多くございますので、ご先輩方のご教授を賜ればと思っております。 やりたいことですが、 既に変換する内容があります。  例:あ → い    う → え とあるとします。 おそらくRubyの変換記述としては、 _text = (_text.gsub(/あ/,'い')) _text = (_text.gsub(/う/,'え')) であっている思うのですが、 これをwindowsのbatで呼び出して、テキスト変換を自動的に処理する記述が知りたいです。 もし可能でしたら、 参照する rb の記述方法と それを実行する bat の記述方法を教えて頂きたく思っております。

  • WindowsでもMacintoshでも正しく改行されるテキストファイル

    (1) 改行コードがWindowsとMacintoshで違うと聞いたのですが、テキストファイルを作る場合、WindowsでもMacintoshでもただしく改行されるテキストファイルを作ることはできないのでしょうか。 (2) できない場合、Windowsで作ったテキストファイルをMacintosh用に変換するにはどうしたらよいでしょうか。

  • 階層付きテキストに変換できる?

    エクセルマクロでも何でも構わないのですが、 「選択したフォルダ以下の複数テキストファイル ⇒ 階層付きテキストに変換」 することは可能でしょうか? 他に方法があれば何でも構いません。 マクロを実行すると、フォルダ指定するダイアログボックスが表示され、フォルダ選択して実行すると、そのフォルダ以下のテキストファイルが、階層付きテキストに変換されるという感じです。 出力される階層付きテキストファイルの階層を示す表示記号は、WZ方式?の「.」「..」「...」です。 可能であれば、、 ・ダイアログボックスには通常「C:~~」から階層構造が表示されますが、自分がよく使うフォルダを起点に表示させる機能(お気に入りを5つ保存できる)があったら最高です。 前回選択したたフォルダ場所を記憶させるのもいいと思います。 出力された階層付テキストファイル例) .フォルダ名1 内容 ..テキストファイル名1 内容 ..テキストファイル名2 内容 .フォルダ名2 内容 ..テキストファイル名3 内容 という感じです。 可能でしょうか?

  • テキスト内の半角の [ を全角の [ に置換したい

    windows環境でrubyを使っています テキスト内の '[' を、全角の '[' に置換したいのですがエラーがでてうまくいきません str.gsub(/\[/,'[') のように書きました

  • テキストを正しく表示して見てもらうには

    何度も同じようなことを聞いてすみません。 (1) OS付属のテキストエディタ(つまり、Macintosh OS 9のSimpleText、Macintosh OSXのテキストエディット、Windowsのメモ帳)のどれかを使っているがどれを使っているのか分からない相手にテキストファイルを渡し、それをOS付属のテキストエディタで正しく表示して読んでもらいたい場合は、 (a)改行コードがCRであるテキストファイル (b)改行コードがCR+LFであるテキストファイル の2つを作ってその両方を渡し、Macintoshを使っているのであればOS 9でもOSXでも(a)を、Windowsを使っているのであれば(b)を、それぞれOS付属のテキストエディタで開いてみてもらうように別途伝えておけば、正しく表示して読んでもらえるでしょうか。 (2) OS付属のテキストエディタ(つまり、Macintosh OS 9のSimpleText、Macintosh OSXのテキストエディット、Windowsのメモ帳)のどれかを使っているがどれを使っているのか分からない相手にテキストファイルを渡し、それをOS付属のテキストエディタで正しく表示して読んでもらいたい場合は、(1)が最も簡単な方法でしょうか。これ以上に簡単な方法があるでしょうか。

    • ベストアンサー
    • Mac
  • フォルダ名とテキスト内容の置換/変更ユーティリティ

    ファイル名やテキスト内容を変更するのに便利なユーティリティソフトを探しています。何かご存知ないでしょうか? イメージしているのは、りねーむ君などの単純なファイル名変換ソフトではなくなく、○フォルダ名が変更できる○指定テキストファイル内の、指定文字列を置換できる ようなものです。 業務上、3階層程度の構造をもったフォルダのフォルダ名と、その中のある場所に保存されているフォームの決まったテキストファイル内の一定の文字列を、変換しなくてはならないことが非常に多く、煩雑な手作業に辟易しています。何かよいソフト/アイディアが御座いましたらぜひご教示いただきたくお願いします…。

  • rubyのsub、gsubを使った文字列の置換について

    rubyによる文字列の置換でちょっと困っています。 例えば text = "ABCDABCEFG" という文字列があったとします。 その中の"ABC"の部分を"あいう"と置き換える場合 text = text.gsub(/ABC/, "あいう") で text = "あいうDあいうEFG" と置換できるはずです。 以上のような操作は問題ないのですが 置換対象と置換後の文字列を以下のように定義して subに放り込むということは出来ないのでしょうか。 置換前文字列:mae = "ABC" 置換後文字列:ato = "あいう" text = text.gsub(/mae/, ato) でもこれだと置換対象が"mae"という 文字列になってしまいますよね・・・ そもそもこのような機能はrubyにはないのでしょうか。 でも無いとかなり不便だと思いますが・・・ 現在何十万行のcsvファイルを数千行の置換文字列対応表 をつかっていっぺんに処理しようとしまして 以上のような方法をとろうとして詰まっています。 どなたか詳しい方ご教授よろしくお願いします。

  • フリーのテキストエディタでJPGを扱えるものは?

    検索・置換が速く、ファイルが小さいので、テキストエディタを使用しています。 写真などのイメージファイルをそのまま取り込めたら、なおいいなと思います。 シェアウエアではありましたが、フリーであるでしょうか? 保存時にイメージをbmpに変換して極端に大きくなるのは避けたいのですが。 ○クターでは見つかりませんでした。 「それはテキストエディタではない」や、「諦めてwordを使え」は、わかっています。

  • テキストブラウザで開ける種類のファイルを教えてください.

     こんばんは.いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  テキストブラウザ(「メモ帳」「秀丸」など)で開ける拡張子についてですが, 私の知るものはせいぜい,「.bat」やプレイリスト関連の「wpl」「m3u」程度でございます. 他にWindowsでよく使うようなファイルでテキストブラウザで開けるファイルは, 一体どのような種類のものがあるのでしょうか??  沢山あるのかも知れませんが,是非とも教えていただきたくお願い申し上げます.                             m(_ _)m

  • 複数のテキストファイルの一括置換について

    複数のテキストファイルの一括置換について 複数のテキストファイル(html)の中にある 【地域名】という文字列を一括でそれぞれA、B、C・・・・という風に異なる文字列に変換したいです。 たとえば 001/index.html の中にある【地域名】は北海道 に変換 002/index.html の中にある【地域名】は青森 に変換 ・ ・ ・ 変換前の文字列は同一ですが、変換後の文字列を全ファイル異なるものにしたいので秀丸等の一括置換ができずに困っています。 全ファイル開いて1つ1つ検索置換していくには2000ファイルほどあるので大変なので何かいい案はないでしょうか? よろしくお願いいたします。

専門家に質問してみよう