• ベストアンサー

sedで置換対象となる文字列の制限は変更できますか?

こんにちは。 今、あるファイル(30個)の1行が45000以上あります。 このファイルの中の文字列を一括置換したいと思い、 sed文にて行ってみましたが、 "input line too long”とメッセージが出て置換が出来ません。 対象のファイルの1行を40959に短くして、実験したところ、置換できました。 この45000以上の文字列置換を実現させるには、何か良い方法がありますでしょうか? 環境は、OS:xp、MKSを使っています。 よろしくお願いします。

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

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

> 何か良い方法がありますでしょうか? 別のツールを使う。 PerlとかRubyとか。 どうしてもsedでというのなら、GNU sedなら行けると思います。 5 GNU `sed''s Limitations and Non-limitations ********************************************* For those who want to write portable `sed' scripts, be aware that some implementations have been known to limit line lengths (for the pattern and hold spaces) to be no more than 4000 bytes. The POSIX standard specifies that conforming `sed' implementations shall support at least 8192 byte line lengths. GNU `sed' has no built-in limit on line length; as long as it can `malloc()' more (virtual) memory, you can feed or construct lines as long as you like. ということですので。 Windows に portingされている GNU sedは探せば見つかります。

masa-it
質問者

お礼

早速の回答、ありがとうございます。 perlにて実現できました。 sedにこだわる必要はなかったのですね、 まったく詳しくなかったので勉強になりました。

関連するQ&A