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

时间:2016-07-06 17:03:26

标签: linux bash csv sed sh

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

为此我正在使用:

sed -i '1,1s/id/id:ID(Person)/g' etc.

具有仅编辑标题所需的效果,但可能需要10秒才能完成。我想这是因为整个文件仍在流式传输,但我找不到阻止这种情况发生。

任何想法或正确方向的观点都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

如果您经常这么做并且很长一段时间,您可以通过读取更大的数据块,在较低级别的语言中做得更好,允许阻止层为您优化磁盘访问。如果你保持“块”足够大的块块,但小到足以避免分页,你应该能够达到最佳位置。

对于1次转换,可能不值得。