区切り文字のない次の形式の長い一連のURLがあります。
http://example.comhttp://example.nethttp://example.orghttp://etc...
各URLをラップしたいです。私はsedを使って "http://"のすべてのインスタンスを "\nhttp://"に置き換えることによってこれをやろうとしています。
sed 's_http://_\nhttp://_g' urls.txt
ただし、分割エラー(メモリ違反)が発生します。ファイルの絶対サイズ(100 GB以上)のため、sedがいくつかの制限を超えたと推測できます。
処理のためにファイルを複数の小さなファイルに分割できますが、「http://」のすべてのインスタンスはそのまま残す必要があります。
もっと良い方法がありますか?
ベストアンサー1
これにより、awk
一度に大量のテキストを読み取ることを回避できます。
awk -vRS='http://' -vORS='\nhttp://' 1 urls.txt > urlsperline.txt
成功するかどうかは、使用されている実装によって異なりますawk
。たとえば、うまくgawk
動作しますが、mawk
競合が発生します。