使用sed s/regex/replacement/,我怎么能同时使用双引号;,还有一个变量,$v,在替换中?

使用sed s/regex/replacement/,我怎么能同时使用双引号;,还有一个变量,$v,在替换中?,regex,bash,sed,Regex,Bash,Sed,我有一个.csv,它遵循“col1”、“col2”、“col3”模式,第一行有标题。我试图使用sed添加一些额外的列,比如“col4”,其中col4来自一个变量 例如,如果我试图添加一个标题为“运动员”的列,其余行由$NAME变量填充 sed -i '1s/$/',\"Athlete\"'/; 2,$s/$/',\"$NAME\"'/' workouts.csv 现在我的结局是 "col","col2","col3","Athlete" "data","data","data","$NAME

我有一个.csv,它遵循“col1”、“col2”、“col3”模式,第一行有标题。我试图使用sed添加一些额外的列,比如“col4”,其中col4来自一个变量

例如,如果我试图添加一个标题为“运动员”的列,其余行由$NAME变量填充

sed -i '1s/$/',\"Athlete\"'/; 2,$s/$/',\"$NAME\"'/' workouts.csv 
现在我的结局是

"col","col2","col3","Athlete"
"data","data","data","$NAME"
我希望像这样的事情

"col","col2","col3","Athlete"
"data","data","data","Michael"
我试着用双引号将所有内容括起来,并尝试将$NAME周围的双引号括起来

我还尝试将s/regex/replacement/delimiter更改为#,以使其看起来更干净

我已经读了好几遍了


我还拔出了一些头发。

变量需要在双引号内,而不是单引号内

使用
-e
可以提供多个命令,因此可以以不同的方式引用它们。第一个命令没有任何变量,因此它可以是单引号,并且不需要在单引号内转义双引号。第二个命令包含变量,因此它需要用双引号括起来,并带有转义

sed -i -e '1s/$/,"Athlete"/' -e "2,\$s/\$/,\"$NAME\"/" workouts.csv 

. <代码>sed-i'1s/$/,“运动员”/;2、$s/$/,“$NAME'/”workouts.csv应该有效,too@WiktorStribi这很有趣。当我运行您的任一解决方案时,会出现sed:unterminated`s'命令错误。我希望我有背景来了解什么与我的环境不同,以及你联系了什么。我想尝试一下,但巴尔马下面的解决方案对我来说很有效。不过,谢谢你!非常感谢。当我以前尝试用双引号括起整个事件时,我没能逃过“$”这个词。用不同的方式引用它们肯定能帮助我看到我遗漏了什么。再次感谢你。