我有一个csv文件,我想替换一行(删除它并在其位置添加新信息),但是我不能使用sed。我不知道,我的bash终端不支持它。假设csv文件是这样的:
Reindent lines
例如,我要删除行a,b,c
d,e,f
并添加d,e,f
。
答案 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
循环可以使用,但是笨拙且效率低下。