指定文字「a1」~「a2」間の語句を全削除したい


テキストファイル内の指定した文字「a1」~「a2」の間にある言葉を全部削除という処理ができるソフトはありますか?
これを複数のテキストファイルに対して一括で処理したいです。
指定する文字「a1」と「a2」という語句はすべてのファイルに入っており、「a1」~「a2」の間に入っている語句はファイルによってバラバラです。

そこで、すべてのファイルに対して「a1」「a2」を指定して、その間にある語句のみ削除を一括で行うということがしたいのですが可能でしょうか?

それができるソフトがあれば教えてください。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/02/25 14:31:45
  • 終了:2012/02/26 20:12:40

ベストアンサー

id:rouge_2008 No.2

rouge_2008回答回数594ベストアンサー獲得回数3512012/02/26 13:33:17

正規表現による一括検索・置換ソフトを利用するといいです。
別の質問(http://q.hatena.ne.jp/1330148197)にメモ帳とあったので、Windowsのソフトをご紹介しますが、「Repl-Ace on .NET」がおすすめです。

「Repl-Ace on .NET」
http://www.forest.impress.co.jp/lib/sys/file/filesearch/repl_ace.html
※Windows 2000、XP、Vistaで動作するソフトですが、7でも動作したという情報がありました。
http://b.hatena.ne.jp/entry/www.sirmiles.com/repl_ace/

Windows Vistaおよび7には「.NET Framework 2.0」はインストールされているようですが、インストールされているバージョンを確認したい場合は、以下の2番目のURLで配布しているバッチファイルを実行してみてください。
http://www.atmarkit.co.jp/fdotnet/dotnettips/934win7fx/win7fx.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/246checkvdnfw/checkvdnfw.html

「Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)」を未インストールの場合は、ダウンロードしてインストールしてください。

・Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)【32bit用】
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&DisplayLang=ja&pf=true

・Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x64)【64bit用】
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=ba9257ca-337f-4b40-8c14-157cfdffee4e&DisplayLang=ja&pf=true


・「Step 1」で「文字セットを判定しながら検索」にチェックを入れるようにしてください。
※ファイルの文字コードがすべて同じ場合は、「Step 2」の「他の機能」→「デフォルトの文字セット」と「デフォルトの改行文字」で正しい文字コードと改行文字を選択しておけば、上記項目のチェックは必要ありません。
・検索文字列と置換文字列の欄にはそれぞれ次のように入力して、「正規表現を使う」にチェックを入れたら、「追加」ボタンを押します。

検索文字列:(?<=a1)(?s:.+?)(?=a2)
置換文字列は空欄のまま

※以下のようにしても同じように置換できます。
検索文字列:(a1)(?s:.+?)(a2)
置換文字列:$1$2

※上記は文字列がa1~a2が複数行にまたがるケースにも対応させてあります。(単一行内にある場合も検索・置換可能です。)
※メイン画面左下の「設定」を開いて、「バックアップを作成」にチェックを入れておくと、実行後に処理結果画面から「他の機能」→「すべてバックアップから戻す」で簡単に復元できます。
(復元実行後に『バックアップから戻せないファイルがありました。』と表示される事がありますが、検索・置換箇所がなかったファイルのバックアップは作成されていない為です。置換が実行されたファイルはバックアップが作成されて、復元実行時には正常に復元されますので心配ありません。)

※処理プラン(検索・置換の内容)は複数登録できます。対象フォルダの分だけ複数回実行する必要がありますが、検索する場所で対象フォルダを変更後、対象フォルダ用の任意のプランにチェックを入れ替えて実行すると、別の質問(「http://q.hatena.ne.jp/1330124078」や「http://q.hatena.ne.jp/1330122680」)にも対処できると思います。
※例えば、検索文字列は「サイトURL」で共通ですが、置換文字列をそれぞれ「http://www.yahoo.co.jp/」、「http://www.google.co.jp/」、「http://q.hatena.ne.jp/」と入力した3つの処理プランを作成して、3回に分けて実行します。

他、詳しい使い方はreadmeを参照してください。(※ソフトの配布ファイルにも含まれています。)
http://www.sirmiles.com/repl_ace/readme/index.html


※一括検索・置換ソフトでしたら他のソフトでも希望の操作は可能ですが、ソフトによって多少正規表現が異なる場合もあります。

その他の回答(1件)

id:freemann No.1

freemann回答回数305ベストアンサー獲得回数482012/02/26 09:41:04

http://q.hatena.ne.jp/1330148197
で回答したスクリプトを利用すると次のコマンドで行えます。

Replace.ps1 -in *.txt -reg "(?s:(?<=a1).*?(?=a2))"

こちらも私の環境で確認はしていますが、念のためコピーしたファイルを使用して試してみてから本番で使用してください。

id:rouge_2008 No.2

rouge_2008回答回数594ベストアンサー獲得回数3512012/02/26 13:33:17ここでベストアンサー

正規表現による一括検索・置換ソフトを利用するといいです。
別の質問(http://q.hatena.ne.jp/1330148197)にメモ帳とあったので、Windowsのソフトをご紹介しますが、「Repl-Ace on .NET」がおすすめです。

「Repl-Ace on .NET」
http://www.forest.impress.co.jp/lib/sys/file/filesearch/repl_ace.html
※Windows 2000、XP、Vistaで動作するソフトですが、7でも動作したという情報がありました。
http://b.hatena.ne.jp/entry/www.sirmiles.com/repl_ace/

Windows Vistaおよび7には「.NET Framework 2.0」はインストールされているようですが、インストールされているバージョンを確認したい場合は、以下の2番目のURLで配布しているバッチファイルを実行してみてください。
http://www.atmarkit.co.jp/fdotnet/dotnettips/934win7fx/win7fx.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/246checkvdnfw/checkvdnfw.html

「Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)」を未インストールの場合は、ダウンロードしてインストールしてください。

・Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)【32bit用】
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&DisplayLang=ja&pf=true

・Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x64)【64bit用】
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=ba9257ca-337f-4b40-8c14-157cfdffee4e&DisplayLang=ja&pf=true


・「Step 1」で「文字セットを判定しながら検索」にチェックを入れるようにしてください。
※ファイルの文字コードがすべて同じ場合は、「Step 2」の「他の機能」→「デフォルトの文字セット」と「デフォルトの改行文字」で正しい文字コードと改行文字を選択しておけば、上記項目のチェックは必要ありません。
・検索文字列と置換文字列の欄にはそれぞれ次のように入力して、「正規表現を使う」にチェックを入れたら、「追加」ボタンを押します。

検索文字列:(?<=a1)(?s:.+?)(?=a2)
置換文字列は空欄のまま

※以下のようにしても同じように置換できます。
検索文字列:(a1)(?s:.+?)(a2)
置換文字列:$1$2

※上記は文字列がa1~a2が複数行にまたがるケースにも対応させてあります。(単一行内にある場合も検索・置換可能です。)
※メイン画面左下の「設定」を開いて、「バックアップを作成」にチェックを入れておくと、実行後に処理結果画面から「他の機能」→「すべてバックアップから戻す」で簡単に復元できます。
(復元実行後に『バックアップから戻せないファイルがありました。』と表示される事がありますが、検索・置換箇所がなかったファイルのバックアップは作成されていない為です。置換が実行されたファイルはバックアップが作成されて、復元実行時には正常に復元されますので心配ありません。)

※処理プラン(検索・置換の内容)は複数登録できます。対象フォルダの分だけ複数回実行する必要がありますが、検索する場所で対象フォルダを変更後、対象フォルダ用の任意のプランにチェックを入れ替えて実行すると、別の質問(「http://q.hatena.ne.jp/1330124078」や「http://q.hatena.ne.jp/1330122680」)にも対処できると思います。
※例えば、検索文字列は「サイトURL」で共通ですが、置換文字列をそれぞれ「http://www.yahoo.co.jp/」、「http://www.google.co.jp/」、「http://q.hatena.ne.jp/」と入力した3つの処理プランを作成して、3回に分けて実行します。

他、詳しい使い方はreadmeを参照してください。(※ソフトの配布ファイルにも含まれています。)
http://www.sirmiles.com/repl_ace/readme/index.html


※一括検索・置換ソフトでしたら他のソフトでも希望の操作は可能ですが、ソフトによって多少正規表現が異なる場合もあります。

  • id:xnissy
    OSは何ですか。
  • id:ken3memo
    1行内ですか?それとも複数行にまたがって削除ですか?

    人力検索a1はてな 質問通知a2メール
    人力検索a1はてなa2に質問が登録されました。
    上記2つみたいに1行(改行)の中だけか?

    それとも(やはり行をまたいで)
    元:
    人力検索はてな a1質問通知メール
    人力検索はてなa2に質問が登録されました。
    結果:
    人力検索はてな 
    に質問が登録されました。
    ---
    みたいに、行を越えて次の行を削除するのか(たぶん、するよなぁ・・・)

  • id:ken3memo
    あっ、ごめんなさい http://q.hatena.ne.jp/1330148197 に 例題が書いてありましたね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません