如何用存储在变量中的值替换以逗号分隔的行的第二个字段



我有一行,所有字段用逗号分隔:

我想用存储在变量"b">

中的值替换第2个字段,即11:50:21.444
01-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的特殊字符,例如/,则会中断。

最新更新