1

サイズが約 1 GB の大きなテキスト データセットを扱っています (最小のファイルには約 200 万行あります)。各行は、いくつかの列に分割されるはずです。例外があるため、想定されています。通常の行は で終わり\r\nますが、かなりの数の行が誤って 2 ~ 3 行に分割されています。

10 列あるとすると、各行は次の形式になるはずです。

col_1 | col_2 | col_3 | ... | col_10\r\n

例外の形式は次のとおりです。

1.  col_1 | col_2 | col_3 ...\n
    ... | col_10\r\n

2.  col_1 | col_2 | col_3 ...\n
    ... | col_10\n
    \r\n

これらの例外を修正する最速の方法は何ですか? テキスト エディター (Mac の場合は TextMate) で、正規表現を使用して 1000 行のサンプルに対して単純な検索/置換を行いました(^[^\r\n]*)\n(を に置き換えました$1)。これは完全に機能します。しかし、テキスト エディタは明らかに大きなファイル (>= 200 万行) を処理できません。sed同等の正規表現を使用してor grep(または他のコマンドライン ツール、または Python でさえも) でこれらを実行できますか?また、その方法は?

4

2 に答える 2

1

あなたのアプローチ:

perl -pe 's/(^[^\r\n]*)\n/\1/' input > output

または、否定的な後読み:

perl -pe 's/(?<!\r)\n//' input > output

または、すべてを削除して、それぞれを次のよう\nに置き換えます。\r\r\n

perl -pe 's/\n//; s/\r/\r\n/' input > output
于 2013-06-26T10:30:55.653 に答える