大きなファイルを1行ずつ読み込むスクリプトがあります。私が使用したいレコードセパレータ($/
)は(\n
)です。唯一の問題は、各行のデータにCRLF文字(\r\n
)が含まれていることです。プログラムは行の終わりと見なすべきではありません。大きなファイルをperlで読み込み、レコードごとに動的レコードセパレータを使用する
例えば、ここで(書き出さ改行とのCRLFで)サンプル・データ・ファイルである:
line1contents\n
line2contents\n
line3\r\ncontents\n
line4contents\n
Iは$/ = "\n"
を設定した場合、それは2行に第三の行を分割します。理想的には、ちょうど$/
を\n
と一致し、\r\n
ではない正規表現に設定できますが、それは可能ではないと思います。別の方法としては、ファイル全体を読み込み、split関数を使って正規表現を分割する方法があります。唯一の問題は、ファイルが大きすぎてメモリにロードできないことです。
提案がありますか?
+1:これは、指定されたデータを処理するための唯一の提案です。 'dos2unix'で変換すると、ファイルの構造が完全に破壊され、 '\ r \ n'をスペース、タブなどに変換するのはおそらく難しいでしょう。行のメインテキストには表示されない置換を選択する必要があります。 –
ありがとう、これは私が考えると信じられない非常に簡単なアプローチです。これは、パターンがより複雑なより一般的な場合にも適用できます。 –
[Data :: Record](http://p3rl.org/Data::Record)の 'split'は正規表現です。 – daxim