我有一个巨大的文本文件,太大了,无法将其全部分页到内存中。我需要对这个文本文件进行的操作就是编辑第一行(它是一个 CSV 文件,我需要修改标题)。
有没有一种简单的方法可以在 bash 中做到这一点?
答案1
您可以使用less
查看要编辑的内容并sed
进行更改。这样,您无需加载整个文件即可进行编辑。
另一种方法是拆分文件,编辑并再次合并:
split -b 10000k <file>
and to join:
cat xa* > <file>
答案2
如果你的修改改变了文件的长度,则需要重写整个文件,例如这次讨论就 SO 而言。您可能应该考虑将数据保存到数据库中。
记住这一点,您可以使用 sed 流式编辑文件。要替换第一行,请执行以下操作(GNU sed):
< oldfile sed '1c\new_heading' > newfile