• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DOSバッチでUNIXテキストファイルの文字列置換)

DOSバッチでUNIXテキストファイルの文字列置換

このQ&Aのポイント
  • DOSバッチでテキストファイルの文字列置換を行うプログラムを作成しましたが、置換後のテキストファイルに問題が発生しました。
  • 問題1は、UNIXテキストファイルの改行コードがLFからCR+LFに変わってしまうことです。
  • 問題2は、置換後のテキストファイルに空白行がなくなることです。どうやらDOSプログラムではこの問題を解決することができないようです。sed, awk, WHS, power shell を使用する必要があります。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

改行文字、空行、どちらの問題もバッチコマンド機能だけでは対応不可能です。 お書きのどれかのツールを使う必要があります。 VBScriptやJScriptならWindows標準装備なのでおすすめです。 VBScriptだと、下記のようなファイル foo.vbs を作って、 cscript //nologo foo.vbs < t22.org > t22.txt ====foo.vbs==================================================== Do While Not WScript.StdIn.AtEndOfStream str = WScript.StdIn.ReadLine WScript.StdOut.Write replace(str,"abc","xxx") & vbLF Loop

sima_c200
質問者

お礼

notnotさん お世話になります。 問題2)空白行の対応ができない段階で、私の目標が達成できないことになるので、 やはり、DOSオンリーをあきらめるのが妥当なんですね。 先ほど、GNU sed 4.2.1を個別にインストールして、UNIXのテキストの文字置換を やってみたのですが、 sed -e s/adc/xxx/ t22.txt > t23.txt を実行すると、 問題2)の空白行問題は、解決するのですが、問題1)の改行問題は解決しませんでした。 UNIXテキストファイルの改行LFが改行CR+LFに書き換わってました。 私が使っているPCのうち、 Windows XP SP3 は、Windows Script Host Verion 5.6 Windows 7 は、Windows Script Host Verion 5.8 が入っていましたので早速、取り組んでみます。 私が途中まで作ったファイルの解凍処理がバッチなので、このバッチの中から WSHをコールするのは、 cscript //nologo foo.vbs < t22.org > t22.txt で実行できますか? あっ、自分で試してみます。 また、わからないことがあったら、ご質問させていただきます。 早速、WSHに取り組んでみます。 ありがとうございました。

sima_c200
質問者

補足

notnot さん、WSHでの動作確認ができました。 Windows Script Host Version 5.8と5.6でいくつかのVBScriptを作って実行してみましたが、 DOSだけで四苦八苦していたことが、かなり時間の無駄だったように思います。 Windows XP, Windows 7の両方で動作確認が取れたのでよかったです。 DOSの呪縛から解き放たれた気分です。 完結丁寧なアドバイス、ありがとうございました。

関連するQ&A