bash - sed 命令替换具有特殊字符 "&"的字符串

标签 bash shell awk sed

test.csv 的内容是:

XYZ,IN123

这是我的脚本:

Var1=IN123
Var2=A&B
sed -i "s/$Var1/$Var2/g" test.csv

这是我简单的替换test.csv内容的代码,当代码找到IN123时,将替换为A&B。

所以预期的输出是:

XYZ,A&B

但是通过上面的代码我得到:

XYZ,AIN123B

我做错了什么?

最佳答案

由于问题询问如何使用 SED 完成此操作,因此有一个鲜为人知的功能在这里非常有用 - 分隔符可以是您想要的任何内容,只要它们是不在您的替换字符串中。

所以对于以上你可以做

sed -i "s|$Var1|$Var2|g" test.csv

..并且可以将其替换为 $ 或 : 或您喜欢的任何其他内容。

关于bash - sed 命令替换具有特殊字符 "&"的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28589098/

相关文章:

linux - 我如何从 awk 中的字符串中选择第 s 个值?

linux - 预置到正则表达式匹配

bash - 使用 bash、cURL 和 GitHub API 从命令行 fork GitHub 存储库

macos - awk:根据模式转换某些行,按原样打印其余行

android - 脚本运行速度太快了!可能

shell - 使用 SED、TR 或/和 awk 删除不需要的字符和空行

python - 在 CSV 中查找字符串的一部分并用新条目替换整个单元格?

macos - 无法从 BASH 脚本中运行 psql 命令

excel - 如何使用shell脚本将结果保存在excel中的单独列中

shell - 使用 golang 从命令行读取输入到 shell 脚本 exec