如何删除文件中从特定位置到文件末尾的行

如何删除文件中从特定位置到文件末尾的行

我有一个包含很多行的文件。

我想删除从第1458行到文件末尾的内容。我认为我可以做到这一点sed,但我不知道该怎么做。

答案1

sed '1458,$d'

如有必要,您可以使用它来-i编辑文件。

例如

sed -i '1458,$d' filename.txt

答案2

有很多可能性可以做到这一点,但如果文件非常大,最好停止处理给定位置之后的任何行并退出。这正是该命令q的设计目的sed

sed 1458q file

答案3

$ head -n 1458 myfile > myfile.tmp ; mv myfile.tmp myfile

旁注:据我所知,没有明确的方法可以根据行数缩短文件(在 bash/shell 等中),这不涉及首先创建一个新文件(这就是 sed 或 sed -i(n place)确实如此。)如果剩余磁盘空间不足以容纳新写入的文件,这很重要。在这种情况下,如果您可以粗略地猜测新文件的大小,请 truncate -s {number of bytes} myfile删除文件末尾,而不创建新文件。

相关内容