大きなテキストファイルが途中で壊れていますこのファイルを読み取ろうとすると、find AWKを使用して行数:ファイルの途中にファイルの破損がある場合、最初のN行をスキップしてファイルの残りの部分を印刷します
[email protected]> awk 'END{print NR}' file.txt
awk: (FILENAME=file.txt FNR=300) fatal: error reading input file `file.txt': Input/output error
だから私はすべてのことは、この破損した行の後に来る印刷し、それの前に来ることすべてで出力を結合するためにtailコマンドを使用してについて考えています。 tailコマンドは、このファイルの最後からファイルの読み込みを開始するので、デフォルトで正常に動作します。このファイルの最後を問題なく印刷できます。しかし問題は、このファイルが何行あるか分かりません。私は尾を使用して破損のポイントの前にすべての行をスキップしようとするのであれば、私が取得:
[email protected]> tail -n +301 file.txt > after_error.txt
tail: error reading `file.txt': Input/output error
尾は、当然のことながら、ファイルの終わりをから始まるファイルを読み込むことができますが、それはまだ読み込むことを意味しています最初のN行をスキップするように指示すると、ファイルの先頭から削除されます。
私の質問は、破損点の後にすべての行をどのように印刷するのですか?私はまた、このファイルを救助するための他の方法があるかどうかを知って嬉しいです。
'BS = 1 'と' dd'と '=・オフセットはskip''とdd'が約ある ' – Thor
あなたのために良い仕事かもしれないスキップしてみてください腐敗を避けるための合理的な方法です。ファイルを 'hexdump'または' od'して、破損が終了するオフセットを判断することもできます。 –