linux - 跳过前 N 行并打印文件的其余部分,假设文件中间存在​​文件损坏

标签 linux bash awk tail ioerror

我有一个大文本文件,中间损坏了当我尝试读取这个文件时,说使用 awk 查找行数:

person@terminal> awk 'END{print NR}' file.txt
awk: (FILENAME=file.txt FNR=300) fatal: error reading input file `file.txt': Input/output error

所以我考虑过使用 tail 命令来打印这个损坏行之后的所有内容,并将输出与它之前的所有内容连接起来。 tail 命令默认工作正常,因为它从文件末尾开始读取文件,所以它可以毫无问题地打印文件的末尾。但问题是,我不知道这个文件有多少行。因此,如果我尝试使用 tail 跳过损坏点之前的所有行,我会得到:

person@terminal> tail -n +301 file.txt > after_error.txt
tail: error reading `file.txt': Input/output error

这意味着虽然 tail 可以从文件的末尾开始读取文件,但如果我告诉它跳过前 N 行,它仍然会从文件的开头读取。

我的问题是,如何打印损坏点之后的所有行?我也很高兴知道是否有其他方法可以挽救此文件。

最佳答案

尝试

strings file.txt

cp file.txt /otherPartition/file.txt

关于linux - 跳过前 N 行并打印文件的其余部分,假设文件中间存在​​文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47762218/

相关文章:

c - raspberry-gpio (sysfs) raspberry 上的 poll()

c - 结构初始化性能

python - Python 2.2.3 中的 SQLite

awk - 使用 awk 从文件中删除第一行和最后一行的最简单方法是什么?

linux - 服务器安装后如何通过owncloud将文件添加到树莓派上的外部驱动器

linux - 如何在同一目录中的另一个脚本中使用 bash 脚本中的函数和变量?

linux - 删除字符串前的空格

Git shell 命令别名给出 "bad config file"错误

linux - 如何打印包含特定数字的行号?

linux - 如何在 Windows 中编写多行 awk 命令?