【问题标题】:Find and replace in bash for variables在 bash 中查找和替换变量
【发布时间】:2013-11-26 17:10:57
【问题描述】:
我正在使用 bash,我想知道是否有一种很好的方法可以使用 bash 对文件进行查找和替换。就我而言,我想将占位符变量转换为原始变量,并使用任意数量的不同变量。例如:
"$PLACEHOLDER_ABC" -> $ABC
"$PLACEHOLDER_123" -> $123
"$PLACEHOLDER_qwe" -> $qwe
我不确定从哪里开始,我应该使用 find、sed、while 循环还是以上所有方法?
【问题讨论】:
标签:
linux
bash
shell
sed
debian
【解决方案1】:
类似
sed 's/\$PLACEHOLDER_/\$/g' file
将在美元符号后的任何位置删除PLACEHOLDER_,有效地截断它出现的参数扩展。
【解决方案2】:
您可能想看看“m4”宏处理器。联机帮助页为here。它包含在大多数 Linux/Unix 发行版中。
这是一个小例子:
define(`hello', `Hello, World')
hello, welcome to m4!
如果我们使用命令通过 m4 运行这个文件
m4 sample.m4 > sample.txt
它产生以下输出:
Hello, World, welcome to m4!
【解决方案3】:
查找文件名 -exec sed -i 's/\$PLACEHOLDER_/\$/g' {} \;