第一个解决方案:您能否将您的 sed 更改为关注一次。
my_id="your_bash_value"
sed "s/$my_id/'181122','98977','98934','9915','1748','9359','7959'/g" Input_file
仅当您想在sed 中使用shell 变量时,上述内容才有用。由于OP的问题最初并不清楚,所以添加了这个。
第二个解决方案: 如果您没有传递任何变量并且$ 实际上存在于文件中,请尝试以下操作。使用 GNU sed。
sed "s/\\$/'181122','98977','98934','9915','1748','9359','7959'/g" Input_file
第三个解决方案:添加这个,因为 OP 说第二个解决方案不适合他。
sed 's/\$my_id/'"'"'181122'"'"','"'"'98977'"'"','"'"'98934'"'"','"'"'9915'"'"','"'"'1748'"'"','"'"'9359'"'"','"'"'7959'"'"'/g' Input_file
第 4 个解决方案: OP 告诉他第 3 个解决方案对他有效,但如果 OP 在他的新值中有 n 个 ' 值(这将是很难手动添加 '"'"' 和所有它们),它们的值中有 ' 然后生成这个新值(通过代码在 sed 中使用)尝试跟随。
首先在这里生成 sed 可接受的值:
awk -v s1="\"" -v s2="\047" -v val="'181122','98977','98934','9915','1748','9359','7959'" 'BEGIN{value=s2 s1 s2 s1 s2;OFS=",";gsub(/\047/,value,val);print val}'
上面会将值从'181122','98977','98934','9915','1748','9359','7959' 更改为'"'"'181122'"'"','"'"'98977'"'"','"'"'98934'"'"','"'"'9915'"'"','"'"'1748'"'"','"'"'9359'"'"','"'"'7959'"'"' 输入变量值应与您发布的格式相同。然后,一旦您将其粘贴到 sed 命令中并进行替换。