パターンを削除する必要がある非常に大きなファイルがあります。問題は、ファイルに改行文字がないことです。削除するパターンは次のとおりです。... 1666 more items
ここで、1666は任意の数字にすることができます。
ベストアンサー1
sed
これが最高のツールかどうかはわかりません。個人的に私はperl
そのようなものを見つけて、次のような結論を下しました。
perl -pe 'BEGIN{ $/ = " more items"; } s/\.\.\.\s\d+ more items$//;'
-e
実行するプログラムのテキストです。
-p
プログラムテキストの暗黙的なループが各レコードに対して一度実行されることを意味します(デフォルトでは、1つのレコードは1行です。以下の修正を参照)。
$/
まず、デフォルトの改行()のレコード区切り文字を「more items」文字列に設定します。これは\n
、マークされたブロックBEGIN { }
の先頭で一度行われます。
レコード区切り文字まで(および含む)一度に1チャンクずつ入力を読み込みます。したがって、各ループの入力バッファには「とにかく…1234個の追加項目」があるようになります。
これはs/\.\.\.\s\d+ more items$//
、3つの点(「すべての文字」の特別な意味を削除するためにエスケープされています)、スペース(\ s)、1つ以上の数字(\d+
)、および「追加項目」テキストで構成される文字列を削除するための置換です。録音終了($
)。記録の終わりを一致させる必要はありませんが、一致速度を上げることができます。
このオプションはデフォルトで結果を印刷します-p
。