• 締切済み

Perlでのテキスト置換について

Perlでのテキスト置換について 現在、Perlにてテキストの置換について挑戦をしておりますが、なかなかうまくいきません。pプログラマーでもないので、参考書を片手にやっておりますが、まったく進みません。 先輩方々のご知恵をお借り出来ればと思っております。 処理した内容は、別ファイルに記載されたテキスト置換一覧を実行ファイルで呼び出して、対象のテキストを置き換えるというものです。バックアップなどが出来れば、なおよいです。 理想として、複数行・正規表現を使いたいと思っております。 先輩方のご知恵を拝借できれば、うれしく思っております。

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

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

やりたいことはなんとなくわかるけど, 細かいところを詰めておかないと問題になりそうだね. そもそも「別ファイルに記載されたテキスト置換一覧を実行ファイルで呼び出す」の意味がわからんけど, ここは超能力 (笑) で s/呼び出して/読み込んで/ と思うことにしておく. それでも ・その「別ファイル」はどのような形式になっているのか ・置換候補が複数あった場合にどうするのか ・「置換した結果置換できるようになる」ことは想定しないのか ・「複数行」ってどういうこと? とか, ちょっと考えるだけでも問題が出てくる.

efcs
質問者

お礼

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

efcs
質問者

補足

回答ありがとうございます。 説明が足りなかったと反省しております。 ・単純にリスト置換が出来ればOKです。 ・リスト自体に複数は存在しません。 ・複数行置換は可能であればなので…(すいません)。 Perlからリスト置換ファイルを呼び出して、そのリストに従ってファイルを書き出すことが出来ればよいです。 因みに、テキスト自体は全て「プレーンテキスト」です

関連するQ&A

  • Perl正規表現(置換)

    Perlを用いてテキスト中の文字列 /^\d+$|^\d+\.[05]{1}$/ を、以下の文字列に置換したい場合、 うまくやる方法はないでしょうか? /^[0]+$|^[0]+\.[0]+$/ 正規表現を使いたいですが、 1つ1つエスケープしていくのはさすがに・・・ よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • テキスト置換ツールについて

    あらかじめExcelで作成した置換表(置換前文字列、置換後文字列の一覧)に基づいて、指定したファイル群のテキストを一括置換してくれるようなツールはないでしょうか。

  • テキストエディタでの置換(正規表現チェック済)と同様のことを

    テキストエディタでの置換(正規表現チェック済)と同様のことを エクセルのマクロでもしたい。 画像を添付しましたが、秀丸で置換を選択し、 検索文字列と置換文字列を入れて、正規表現チェックのチェックボックスを 選択した状態で実行するのと同様のことをエクセルのマクロで行いたいです。 正規表現混みだととても難しいです。 やりたいことはマクロで、フォルダ内のテキストファイルを置換をかけていきたいです。(テキストファイルは複数ある状態)そのテキストファイルを更新できればいいです。(別テキストで出力されてもいいです。) どなたか詳しい方、教えていただけませんでしょうか? よろしくお願いいたします。 --- 検索エディタ【秀丸】【置換】 検索【.*item1=(.*) item2=(.*) .*】 置換【\1\t\2】 正規表現チェック

  • テキストエディタでの置換

    カテゴリが違うかとも思いますが、こちらをごらんになる方々は正規表現に詳しいかと思い、質問させていただきました。 あるテキストファイルで、  (1階)→ 1F のように変換したいのですが(数字はさまざまです)、編集メニューから検索・置換ウインドウをたちあげて、  検索する文字列:(.*階) とすれば検索はできます。 その後、数字は残して1Fのように変換することはできるのでしょうか? 文字数が非常に多いため、手動変換したくなくて・・ どなたかお教えください。お願いします。m(_ _)m

    • ベストアンサー
    • Perl
  • ○○個目と●●個目の××を置換したいのですが...

    例えば, aaa\n bbb\n ccc\n ddd\n eee\n ... となっているテキストファイル(\nは改行)の,3n個目(n=1,2,3,...)の\n(つまり3,6,9,...個目の\n)を\tに置換したいのですが,そのようなツールはありますでしょうか? (あるいはそのような正規表現を教えていただければと思います.perlでやろうとしたのですが,不慣れなためできませんでしたので...) よろしくお願い致します.

  • この置換処理について

    以下の処理がうまくいきません。 perlで実行すると以下の置換を行ってテキストファイルができるはずなのですが、0KBのテキストファイルができてしまいます。 そこで、手動で置き換えようと思ったのですが。 正規表現を使用した、置換処理を行っているということはわかっているのですが中の処理が分かりません。 詳しい処理の内容を教えていただけないでしょうか。 よろしくお願いいたします。 while(<>){ if(m#^(.+) /// (.+)$#){ $flg = 1; $word = $1; $text = $2; $line = $_; if($word =~ / /){ #熟語なら if(length($word) > 15){ $flg = 0; } elsif($word =~ /([A-Za-z]+) ([A-Za-z]+)/){ if(length($1) > 5 && length($2) > 5){ $flg = 0; } } } if($text =~ m#/#){ $text =~ s#/ .+##g; } } if($flg){ print $word.' /// '.$text."\n"; } }

    • ベストアンサー
    • Perl
  • テキストファイルの一部を複数パターンで置換

    初めて質問させていただきます。 以下のようなテキストファイル(元ファイル) があります。 1行目 あいうえお 2行目 codea=aaaaa/$$ 3行目 codeb=11111*11111 4行目 … この2行目と3行目の「aaaaa」「11111」 の文字列を以下に従って置換し保存したいです。 置換パターンは、 別ファイルに一覧になっています。 bbbbb 22222 ccccc 33333 … これを、元ファイルの 「aaaaa」を「bbbbb」に、 「11111」を「22222」に置換し、 ファイル名を「bbbbb-22222.txt」として 保存するのを、 置換パターンの数だけ行う必要があります。 VBA、バッチは経験があります。得意分野ではありませんが… 申し訳ありませんが、ご教授いただけないでしょうか?

    • ベストアンサー
    • CSS
  • Perlでhtmlファイルの検索、置換がしたい

    Perlを用いて、数百あるhtmlファイルの一括検索&置換作業がしたいです。 作業としては、 1.webに上がっているhtmlファイルを取得してローカルに保存 (完了) 2.meta系テキストの記述 例:<meta property="og:title" content="" /> 3.さきほど保存したファイルの中から、titleタグの中身を取得して変数に格納 例<title>今日の日記</title>の「今日の日記」部分 4.og:titleのcontent要素に格納したデータを記述する 例:<meta property="og:title" content="今日の日記" /> 以上です。 現在1は出来ていて、2も一括置換で可能です。3.4のローカルに保存したhtmlファイルの操作で躓いています。 お分かりの方どうぞよろしくお願いします。

    • ベストアンサー
    • Perl
  • perlで特定行から特定行までを抜き出しor置換

    perlで以下のようなことをしたいと考えています。 以下のことを、コマンドラインから「perl ~」という形で 実行したいのですが、どのよにすればよいでしょうか。 1.特定行から特定行までを抜き出し 2.特定行から特定行の範囲で文字列置換 例えば、次のようなテキストファイルがあったとします。 example.txt ================================== #START aaaa hogehoge test okok perl script #END ================================== 上記ファイルを読み込んで、 1.「#START」から「#END」の間に挟まれた行だけ抜き出し 2.「#START」から「#END」の間で、「test」を置換 のです。 sedで言うところの sed -e '/#START/,/#END/ s/YYYYMM/201603/g' test.txt をやりたいのです。

    • ベストアンサー
    • Perl
  • 複数ファイルの文字列置換の方法について

    あるディレクトリ内にある全てのテキストファイルの中から、「A」という文字列を「B」に置換したいのですが、秀丸もしくはPerlなどで簡単にできますでしょうか? ご存知の方、教えて下さい。 宜しくお願いします。

専門家に質問してみよう