そのため、既存のハードドライブからテキストファイルを回復しましたが、すべてのデータを完全に回復することはできませんでした。正しく回復されなかったデータはヌルバイトで返されました。これらのバイトを含むファイルからすべての行をどのように削除できますか?
破損したデータの例
xE3
xAF
xE2
xBF
NUL
xBD
もっとあります...
NULL が \x00 に等しいことを知っています。
バイトを個別に削除するのではなく、sedを使用して破損したデータを含むすべての行を削除するにはどうすればよいですか?
バイト/破損したデータにはさまざまなバリエーションがあり、正規表現でこれをすべて見つけることができるかどうか疑問です。
ベストアンサー1
バイト 0 またはバイト 128 ~ 255 を含む行を削除するには、次を使用できます。
perl -ne 'print unless /[\0\200-\377]/'
または、grep
PCREサポートでGNUを使用してください。
LC_ALL=C grep -vaP '[\0\200-\377]'
strings
データから印刷可能なテキストを抽出するコマンドも参照してください。
このバイトを削除するには:
tr -d '\0\200-\377'