ヌルバイト/破損したデータを含むすべての行を削除します。

ヌルバイト/破損したデータを含むすべての行を削除します。

そのため、既存のハードドライブからテキストファイルを回復しましたが、すべてのデータを完全に回復することはできませんでした。正しく回復されなかったデータはヌルバイトで返されました。これらのバイトを含むファイルからすべての行をどのように削除できますか?

破損したデータの例

xE3
xAF
xE2
xBF
NUL
xBD

もっとあります...

NULL が \x00 に等しいことを知っています。

バイトを個別に削除するのではなく、sedを使用して破損したデータを含むすべての行を削除するにはどうすればよいですか?

バイト/破損したデータにはさまざまなバリエーションがあり、正規表現でこれをすべて見つけることができるかどうか疑問です。

ベストアンサー1

バイト 0 またはバイト 128 ~ 255 を含む行を削除するには、次を使用できます。

perl -ne 'print unless /[\0\200-\377]/'

または、grepPCREサポートでGNUを使用してください。

LC_ALL=C grep -vaP '[\0\200-\377]'

stringsデータから印刷可能なテキストを抽出するコマンドも参照してください。

このバイトを削除するには:

tr -d '\0\200-\377'

おすすめ記事