• 締切済み

数字のみを置換するバッチファイル

いまテキストファイル内の文字列を置換するbatファイル(VBScript)を作成しているのですが、少し困っています。 ファイル内に英文字と数字が入り混じってる中(1000行くらい)で5文字以上連続する数字のみを置換したいのですが、どなたかアドバイス頂けないでしょうか?? ----------------------------------------------------------------- 例:以下のような文字列があって5文字以上連続した数字を全て■で置換 『iedds0123456ecefafa03223』  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 『iedds■■■■■■■ecefafa■■■■■』 -----------------------------------------------------------------

みんなの回答

  • auty
  • ベストアンサー率58% (284/486)
回答No.3

是非、perlに挑戦することをお勧めします。 バッチファイルはあきらめる事になりますが, 新しいシェルWindows PowerShellへ移行の話も出ている折ですから。

taoi1981
質問者

お礼

コメントありがとうございます。 実行予定のサーバー上では ソフトをインストールしたり コンパイラを置くことが禁止されてるため やむなくWindows環境でデフォルトで動くバッチファイル を選択しました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

VBScript ということでいいんですよね? 半角数字の5連続以上を同じ個数の'■’で置き換えるというのは Dim oReg Set oReg = new RegExp oReg.pattern = "\d{5,}" oReg.Global = True Dim target target = "『ie246dds0123456ecefafa03223』" Dim oResult Set oResult = oReg.Execute(target) Wscript.Echo target For Each i in oResult Dim repstr repstr = String(i.Length, "■") target = replace(target, i.Value, repstr) Next Wscript.Echo target set objRE = Nothing こんな感じでできると思います。 適当に組み合わせて使ってください。

taoi1981
質問者

お礼

アドバイスありがとうございます。 大変参考になりました。 このプログラムを応用して、がんばりたいと思います。 本当に助かりました!

  • splwtr
  • ベストアンサー率16% (75/461)
回答No.1

Windowsなんですね、UNIXだと簡単なんだけど。 前提が違いますね。 ごめんんさい。

taoi1981
質問者

お礼

はい、Windowsなんですよ。 いろいろな理由でUNIXは扱ってない環境なので。。。 コメントありがとうございました。

関連するQ&A

  • 正規表現で全角数字を半角数字に置換する方法は?

    いつもお世話になっております。 テキスト内の全角数字5桁のみを該当の半角数字5桁に置換する方法を探しています。 OS:Win テキストエディタ:sakuraエディタ、秀丸 例) ---------------------------------------- あいうえお01234かきくけこ99さしすせそ ↓ あいうえお01234かきくけこ99さしすせそ ---------------------------------------- 正規表現で行えばいいと思い、置換文字列を  [0-9][0-9][0-9][0-9][0-9] あるいは  [0-9]{5} にしましたが、置換後の文字列が分かりません。 試しに検索で上記の文字列を試すと、該当箇所がマークされるので、 置換前の文字列は合っています。 置換後の文字列をご教授願えますでしょうか。 ※テキストエディタで無理ならプログラム組みます。 VBScriptを考えていますが、他に良い言語があれば併せて教えてください。

  • バッチファイルで文字列を順番問わずマッチさせたい

    バッチファイルで、2個以上の文字列を順番問わずマッチさせたいと考えています。 例えば、 「111 222 333 444 555 666 777」 という内容のテキストファイルがあったとして、 sedコマンドを使って 「222」と「444」と「666」が この順番で含まれている行を置換したい場合、 sed -e "s/.*222.*444.*666.*/置換後の文字列/" in.txt > out.txt とすれば、問題なく置換されると思います。 しかし、上記の例では、 「777 666 555 444 333 222 111」 という内容のテキストファイルは置換されません。 文字列の順番を問わず、 「222」と「444」と「666」が含まれている行ならば、 その行を置換する、といった事は出来ないでしょうか。 sedコマンド以外でも構いませんので、何かいい方法をご存知の方がおられましたらお教え頂けないでしょうか。

  • DOSのバッチで、テキストファイル中の文字を置換したい

    いつもお世話になっております。 WindwsXPでDOSバッチを使ってテキストファイル中にある文字列1を文字列2に置換したいのです。 ネットをさまよっていて、こんな例を見つけました。 (参考にしたのはここです。http://www.fpcu.jp/dosvcmd/bbs/log/cat3/cat54/2-0391.html) ====================== @echo off if "%1"=="" goto end set fname=%1 copy %fname% org >nul type nul >%fname% for /f "tokens=1* delims=" %%a in ( org ) do (set line=%%a&& call :sub) del org goto end :sub :この1行下の acb=xyz に置換前と置換後の文字列を指定する。 set l=%line:abc=xyz% echo %l%>>%fname% goto :EOF :end ====================== これをsample.batという名前で保存し、DOSのウィンドウでsample < a.txt と打つと、a.txtファイル中の"abc"が"xyz"に置き換わります。 これに手を入れて置換前と置換後の文字列を可変にしたく思い、sub中に set mae=abc set ato=xyz の2行を加え、変数に値を設定するようにしました。 ところが、次の1行の書き変え方がわかりません。 set l=%line:abc=xyz% を set l=%line:%abc%=%xyz%% のように変えてみましたが、うまく動きません。 どなたかご教授いただけませんか。DOSだけでファイル中の文字列の置換ができればset文を使う使わないにはこだわりません。

  • 置換をバッチファイルで実行

    あるテキストファイルの中の文字列例えば「ABC」を「DEF」に置換する操作をバッチファイルで実行するにはどうすれば良いのでしょうか?

  • csvファイルの文字を一括置換するbatファイル

    表記の通りです。 クライアントPCのイベントログ(セキュリティ)をcsvファイルに書き出すbatファイルを作成しました。 その中の文字列を別の文字列に一括で置換するbatファイルを作成したいと考えております。 例えば、aaaという全ての文字列を123に置換する(全ての列で)。 おわかりの方がいましたら、アドバイスをお願いいたします。 ついでにもう1つですが、書き出したcsvファイルから特定の列だけを別のcsvファイルにするbatファイルもできたら最高です。 こちらはついでですので、上の質問を優先でご回答をお願いいたします。 ちなみに、当方はプログラミング等初心者です。

  • 数字の置換(引き算)sedコマンド?

    数字の置換(引き算)sedコマンド? 1________2_________3_________4_________5_________6_________7______ 123456789012345678901234567890123456789012345678901234567890123456 ATOM______1__N___VAL_____1______38.983__13.792__44.273__0.00__0.00 … ATOM___1537__OXT_ALA____95______35.430_156.289__27.449__0.00__0.00 TER_______0______________0 ATOM___1538__N___VAL____96______39.910__13.799__36.762__0.00__0.00 … ATOM___3074__OXT_ALA___190______25.170 150.107___6.221__0.00__0.00 上記のようなファイルを対象としています。 上記のファイルの説明を行います。 初めの二行(数字とアンダーバーが書いてある部分)は説明のために付け加えたもので、ファイル中には存在しません。 上の例の3行目から本来のファイルはスタートします。 …は省略を表し、TERは本来ならば1538行目です。 TERの次の行からさらに1537行の情報があります。 これはpdbファイルというもので、18~21列目の番号は原子につけたもので、34~36列目の数字は、アミノ酸残基数を表します。また43列目以降は座標の位置を表します。 本来のファイルにはアンダーバーはありませんが、投稿時に空白はまとめられてしまうので、アンダーバーで置換しております。 ここで質問ですが、TER(1539行目)以降の34~36列目の数字を置換したいと考えております。具体的には、 96→1 97→2 … 190→95 というように置換したいと思います。 以下、留意していただきたい点を書きます。 courie newフォントで見ていただけると列が揃うので見やすいので、可能ならワードなどで張り付けてcourie newで見てください。 置換後の数字(1~95)の右端の数字は21列目になる必要があります。 置換前の数字(96~190)を含んでいる行数は一定ではありません。たとえば、96を指定の位置に持っている行は13行、97を指定の位置に持っている行は、10行などとなっております。 本ファイル(pdbファイル)の形式については、http://homepage2.nifty.com/copper29/ipr/PDBformat.html の10. Coordinate Section 10. 座標(Coordinate Section)に詳しい記述がありますので、御参考にしてください。 Sedコマンドなどを用いてやるのかなと思っておりますが、よくわかりませんので質問させていただきました。

  • 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ファイルを数千行の置換文字列対応表 をつかっていっぺんに処理しようとしまして 以上のような方法をとろうとして詰まっています。 どなたか詳しい方ご教授よろしくお願いします。

  • ExcelVBA バッチファイル編集

    ExcelVBAで再現したい事を検索しましたが望む回答が無かったので質問させていただきます。 実行したいことは、スタートアップにある 【MS-DOSバッチファイル】を裏側?で編集(テキスト)で開き, テキスト内の一部を完全一致で置換を行いたいと考えております。 このバッチファイルを編集して完全一致で置換するところを どのようにコードを記載すればいいか全く分りません。 また置換後は上書き保存を行い【バッチファイル】を実行したいと考えています。 一応流れとしては実行初めに【置換したい文字】【置換後の文字】は退避させております。 正しいか分りませんが、バッチファイルも以下のように指定しました。 ChDrive "C" ChDir "C:Documents and Settings" OpenFileName = Application.GetOpenFilename("batファイル,*.bat") 以上、簡単な事かもしれませんが知恵を貸していただければと思います。

  • ワードファイルの一括置換

    キーワード(80種類程)が含まれたワードファイル(10ページ程度)と、 キーワード(1行目)とそれに対応した文字列(2行目以降)が書かれたエクセルファイル(400行程)があります。 たとえば10行目が指定された場合、10行目に書かれた文字列に置換したワードファイルを簡単に作成できる方法ありませんか?

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

    初めて質問させていただきます。 以下のようなテキストファイル(元ファイル) があります。 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

専門家に質問してみよう