bash - 如何在 bash/sed 中替换采用 shell 变量形式的字符串文字?
问题描述
我熟悉sed
在文件中就地替换的能力,如此处回答:sed edit file in place。
IEsed -i 's/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g' filename
我无法将此概念扩展为替换采用 shell 变量形式的字符串文字——如何做到这一点?
举个例子来说明:
给定文件file.txt
:
# file.txt
set(FOO ${FOO})
...和 shell 环境变量 ${FOO}:
$ FOO=bar
$ echo ${FOO}
bar
...我如何使用 sed 将字符串文字“${FOO}”替换file.txt
为 shell 变量的值,${FOO}
即“bar”?即我希望得到的内容file.txt
是:
# file.txt
set(FOO bar)
我有一个思维障碍,想过去明显不正确的事情sed -i 's/${FOO}/${FOO}/g' file.txt
sed
由于过去的经验,我倾向于,并且sed
出于同样的原因可能更喜欢以-为中心的答案。但是任何解决方案都可能是可以的,但如果 shell-native,则优先考虑 POSIX 合规性。更具体地说,这将在一个带有debian-10.3
基础的 docker 容器中运行......所以我认为适用于该发行版中包含的任何工具的解决方案也应该没问题。
解决方案
推荐阅读
- android - 英文国名
- r - 从大列表中进行条件提取
- python - 如何删除/修改熊猫数据框图表上的轴标题?
- elasticsearch - 带有嵌套对象查询的 Elasticsearch
- python - 我想通过在画布小部件中创建一个框架来创建一个滚动条,但该条不显示
- java - 我想将扫描仪的整数输入限制在一个范围内
- python-3.x - Python 非阻塞套接字关闭:它会引发 BlockingIOError 吗?
- python - 不能完全理解用于创建模式的循环
- apache-kafka - 如何使用控制台消费者从特定点消费来自 kafka 主题的消息?
- django - 如何从 Django Graphene 中的 Tagulous 获取所有标签的列表