• ベストアンサー

テキスト処理を秀丸マクロで

各行のn番目からm番目までの 数値を下記のように置換したいのですが 秀丸マクロではどのようにすればよいのでしょうか? 置換法則 1 → 1,0,0 2 → 0,1,0 3 → 0,0,1 例 n=7 m=8 2,1,3,2,1,2,1,2 2,3,2,3,1,3,3,1 1,2,1,3,2,1,2,1 ↓(置換) 2,1,3,2,1,2,1,0,0,0,1,0 2,3,2,3,1,3,0,0,1,1,0,0 1,2,1,3,2,1,0,1,0,1,0,0 マクロで難しい場合はrubyなら多少は使えますので そちらでよろしくお願いします。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

ruby なら、こんな感じ: def r( a ) return '1,0,0' if a == '1'; return '0,1,0' if a == '2'; return '0,0,1' if a == '3'; return a; end $\ = $/; while DATA.gets chop!; f = split( ',' ); f[6] = r( f[6] ); f[7] = r( f[7] ); print f.join( ',' ); end __END__ 2,1,3,2,1,2,1,2 2,3,2,3,1,3,3,1 1,2,1,3,2,1,2,1

apache6
質問者

お礼

何とか無事実現できました。 ありがとうございました。

apache6
質問者

補足

コマンドプロンプトで正常に動作しました。 ありがとうございます。 コマンドラインで置換前のファイル名を指定して 置換後のファイルを別名で作りたいのですが、 ARGFを使ってもうまくいきません。 お願いいたします。

関連するQ&A

  • 秀丸マクロについて質問です。

    秀丸マクロについて質問です。 秀丸で編集されたテキスト文書の中でabcdefgという文字列がある行を検索し、 その行情報を取得し、その行の隣にある文字列(下記の例では123456)を返す にはどのようにすればよいでしょうか? ご回答よろしくお願いします。 (例) 567行目に以下の文があるとします。 abcdefg,123456,goukaku

  • 秀丸マクロで能率的なテーブル置換は可能?

    DOSの「SED」でできるテーブル置換と同様のことを、「秀丸」マクロを使って、能率的にできないかと考えております。 たとえば、「目」「鼻」「口」を「め」「はな」「くち」に置換したい場合、「SED」では --- s/目/め/g s/鼻/はな/g s/口/くち/g --- という置換テーブルを作って、コマンドを実行すれば成功します。「秀丸」でも、 --- replaceall "目" , "め" , regular, nocasesense; replaceall "鼻" , "はな" , regular, nocasesense; replaceall "口" , "くち" , regular, nocasesense; --- のようなマクロを作って実行すれば、一応同様の結果が得られます。 ところが、上記のような3行程度の命令ならいいのですが、命令行が100行とか200行とか長くなると、能率の問題が出ます。「SED」はほとんど能率は落ちませんが、「秀丸」マクロは1行1行置換していくため、たいへん能率が落ちてしまいます。能率よく置換できるマクロ記述方法がないものか、ご教示いただければ幸いです。 なお、私はこのような大量の語句置換をする必要がしばしばあり、昔からDOSで「SED」を使っていました。ところが、Windows Vistaを使うようになってから、Vistaでも以前のOSでも同じように動く「SED」の日本語版が見当たらないため、ついに「SED」の使用を断念しました。「秀丸」のマクロがその代わりになるかと思いましたが、能率の点で不満があります。つまりは、大量の語句をすばやく一括置換できればいいので、かならずしも「秀丸」マクロにはこだわりません。どうぞよろしくお願いいたします。

  • 秀丸のマクロ

    教えて下さい。 Solarisの資源を取得したテキストファイルがあります(iostat、sar、vmstat)。 エクセルでグラフ化したいのですが、コンマが挿入されていないため綺麗に表示できません。 文字列と文字列の間のスペース(n個)はカットし、コンマを一つ入れるように秀丸で編集したい場合、どのようにマクロを作成すればよいか教えて下さい。 例) <生データ> tty sd0 sd1 tin tout kps tps serv kps tps serv kps 3 1 461 19 19 460 18 19 0 0 <マクロ実行後> tty,sd0,sd1 tin,tout,kps,tps,serv,kps,tps,serv,kps 3,1,461,19,19,460,18,19,0 宜しくお願いします。

  • 秀丸で置換かマクロで括弧をとりたい

    下記のような文字列の並びで、括弧と中の数字を 削除したいのですが、置換かマクロなどはあるでしょうか? 東京都(154) 千葉県(132) 茨城県(763) 埼玉県(3040) 群馬県(1178) 東京都 千葉県 茨城県 埼玉県 群馬県 (.*)で置換してみたんですが、すべて文字が なくなってしまいました(汗) 秀丸のバージョンは7.11です。

  • 秀丸の置換

    秀丸の置換について教えてください。 下記のような文字列が文章の中にところどころあったとします。 <p>洋服</p> <p>靴下</p> <p>Tシャツ</p> <p>サンダル</p> それを削除したいのですが、置換でできるでしょうか? 簡単にいうと<p>から</p>までを削除したいのです。 こういう場合はマクロになるのでしょうか? 質問の仕方が悪くて済みません。 お分かりの方がいましたら、お願いいたします m(__)m

  • 秀丸の数値(半角)の前にタブを入れたいのですが、

    秀丸の数値(半角)の前にタブを入れたいのですが、 どうすればよいですか? 正規表現で数値にマッチして使おうと思いましたが、 数値が消えてしまいます。 数値を残してタブを挿入したいです。 例 置換前 やほー100 置換後 やほー(タブ)100

  • 秀丸マクロについて

    1行目から3行目までを1、4行目から6行目までを2、7行目から9行目までを3、と3行で1増えていくような数値を出力するマクロを書きたいと思います。 [作成したいデータ]------------------ 1, 1, 1, 2, 2, 2, 3, 3, 3, 4... ------------------------ 下記のマクロの<>部の記述方法をアドバイス下さい。 [Macro]------------------------------- disabledraw; gofiletop; #a =1; while(#a < 100){ insert <aを3で割った整数部+1> insert "\n"; #a=#a+1; } enabledraw; endmacro; -------------------------------------- 他によい案があればそれでも結構ですが。。 宜しくお願いします。

  • 秀丸のマクロでいちいち表示を更新しないためには

    秀丸についてお教えください。 テキストファイルに、改行なく、文字がべたべたべた・・・と、 何万文字も入っています。 1行1文字にしたいので、右矢印キーとエンターキーを繰り返したいと思っています。 (なぜ置換を使わないのか、の説明は省きます。) マクロを使って、下記のような感じにすればいいと思っています。 #a = 100000; while(#a > 0){ right; insertreturn; #a = #a -1; } ですが、これを実行すると、いちいち表示を更新してくるため、遅いです。 私としては、「全置換」の「一気」の「スピードアップ」みたいに、 サササーッ という具合にやりたいのですが、どうすればよいでしょうか。 また、ついでに聞きますが、 上記のマクロで、100000のように数を指定しないで、「ファイルの終わりまで」みたいにやるにはどうすればよいでしょうか。

  • 秀丸マクロについて

    行頭にスペースやタブが0~n個あり、続いて「//」がある行の行頭に 「p」と付与する秀丸マクロを作成したいのですが、 このような場合はどうすればよいでしょうか? 参考になるコードやサイトなどあれば教えて頂けないでしょうか? 例: <タブ><半角スペース><半角スペース>//AAA <タブ><タブ>BBB<タブ>//CCC //DDD EEE<半角スペース><半角スペース>//FFF ↓ p<タブ><半角スペース><半角スペース>//AAA <タブ><タブ>BBB<タブ>//CCC   ←条件に合わないので「p」はつけない p//DDD EEE<半角スペース><半角スペース>//FFF   ←条件に合わないので「p」はつけない

  • さくらエディタと秀丸との正規表現の違い

    こんにちは。サクラエディタと秀丸エディタを使っています。普段は秀丸エディタを使用しています。本日たまたまサクラエディタを使って、以下の文字を置換しようとしました。「\n」→「,」。 abced\n fghijk\n fddsafafa\n \nは改行と思ってください。これをやると下記のように置換されました。 abced\n ,fghijk\n ,fddsafafa\n しかし、秀丸で同じようなことをやると、 abced,fghijk,fddsafafa, っとなります。なぜこのような違いが起きるのでしょうか?やりたいことはいたってシンプルで、改行をカンマに置き換えたいといったことだけですのに。 以上、よろしくお願いします。 ,