我有一行,所有字段用逗号分隔:
我想用存储在变量"b">
中的值替换第2个字段,即11:50:21.44401-01-2022,11:50:21.444,1234543233443,0,0,0,0,1
我试过使用sedCat abc.csv| sed 's/$2/$b/'
任何时候你发现自己在谈论字段,你应该使用awk而不是sed或grep,因为awk有字段的概念,而其他的没有,awk可以做文字字符串替换,而sed不能。
awk -v b="$b" 'BEGIN{FS=OFS=","} {$2=b; print}' abc.csv
变量不能用单引号展开。
而且,sed不知道列。
sed 's/^([^,]*),([^,]*)/$1,'"$b"/ abc.csv
^ ~~~~~ ^ ~~~~~
| | | |
start of | Comma |
the string | No comma
No comma again
注意,如果$b
包含sed
的特殊字符,例如/
,则会中断。