如何在不使用sed的情况下替换csv文件中的行

时间:2018-12-11 09:32:41

标签: bash csv sed replace grep

我有一个csv文件,我想替换一行(删除它并在其位置添加新信息),但是我不能使用sed。我不知道,我的bash终端不支持它。假设csv文件是这样的:

Reindent lines

例如,我要删除行a,b,c d,e,f 并添加d,e,f

1 个答案:

答案 0 :(得分:0)

使用Awk:

awk '/^d,e,f$/ { $0 = "g,h,i" }1' file.csv

GNU Awk有一个inplace选项,或者只是写入一个临时文件,然后mv在原始文件之上。

如果您有sed,但不支持-i选项,则可以使用相同的方法。

perl -pi 's/^d,e,f$/g,h,i/' file.csv

将像sed -i一样就地替换。

tr不适合此任务。 Bash while read -r循环可以使用,但是笨拙且效率低下。