linux sed仅在编辑第一行时读取整个文件

linux sed仅在编辑第一行时读取整个文件,linux,bash,csv,sed,sh,Linux,Bash,Csv,Sed,Sh,我目前正在处理大小为10 GB的CSV文件,需要根据用例动态编辑标题 为此,我使用: sed -i '1,1s/id/id:ID(Person)/g' etc. 它只具有编辑标题的预期效果,但可能需要10秒以上才能完成。我想这是因为整个文件仍在流式传输,但我无法找到方法阻止这种情况发生 任何正确方向的想法或观点都将不胜感激 sed不是问题所在。问题是您正在传输10GB文件。如果这是您在其上执行的唯一操作,sed可能并不比任何其他基于行的实用程序(awk等)差多少 如果您首先读取整个文件,Per

我目前正在处理大小为10 GB的CSV文件,需要根据用例动态编辑标题

为此,我使用:

sed -i '1,1s/id/id:ID(Person)/g' etc.
它只具有编辑标题的预期效果,但可能需要10秒以上才能完成。我想这是因为整个文件仍在流式传输,但我无法找到方法阻止这种情况发生


任何正确方向的想法或观点都将不胜感激

sed
不是问题所在。问题是您正在传输10GB文件。如果这是您在其上执行的唯一操作,
sed
可能并不比任何其他基于行的实用程序(
awk
等)差多少

如果您首先读取整个文件,Perl可能会做得更好,但是您的内存占用将非常大,并且根据您的系统,您可以开始分页

如果这是您将要经常且长期执行的操作,那么您可以通过读取更大的数据块,在较低级别的语言中做得更好,从而允许块层为您优化磁盘访问。如果您将“块”保持在块层所需的足够大的位置,但又足够小以避免分页,那么您应该能够找到最佳位置


可能不值得进行1次转换。

如果不重写整个文件来移动数据,它将如何容纳更多的11个字节?你想要
ID(Person)
覆盖接下来的11个字节吗?@Thomas:我的评论不合适。删除了那个。那么这很快就会发生这是I/O限制。您是否将运行时间与
cat file>file.copy
进行了比较?你不会跑得比那更快的。