【发布时间】:2016-04-17 13:13:53
【问题描述】:
我有一个非常大的文件,需要在其上运行多个 sed 命令,我想避免内存不足错误并节省时间。这些都是等价的吗?
sed -e 'expr1' -e 'expr2' -e 'expr3' filesed 'expr1;expr2;expr3' filesed expr1 file | sed expr2 | sed expr3
我的猜测是,使用 (3) 中的管道,每次都单独处理流,因此与仅处理一次的 (2) 相比,它需要 3 倍的时间)。但我不确定 sed 如何在内部处理 (1)。
【问题讨论】:
-
你猜对了,1和2一样。
-
@BenjaminW.maybe 写一个答案来解释你是怎么知道的?
-
-e选项还会导致命令以换行符结束,允许命令i,c,a以及以文件名结尾的命令,例如w,@ 987654329@,r和R内联写入。另一种用途是与-f选项结合使用时作为包处理程序,即可以插入包含s/5/Z/的文件A:seq 20| sed -e '10,20{' -f fileA -e '}',第15 行变为1Z。
标签: sed