linux - 使用 Bash 将所有文件键替换为新值

标签 linux bash sed

在不精确键的情况下查找和替换文件中所有键的值的最佳方法是什么?

示例:

originalFile.txt  ------------------------------------>  newFile.txt              
key1=a                                                   key1=$key1
key2=b                                                   key2=$key2
key3=c                                                   key3=$key3 

我想到了这个,但我无法为任何新添加的 key 动态地做到这一点:

sed '/^key1/s/=.*$/= $key1/' newFile.txt

最佳答案

awk -vFS="=" -v OFS="=" '$2="$"$1' originalFile.txt

使用sed:使用反向引用捕获\1=的左边和=中的右边\2:

sed -r 's/(^[^=]+)*=(.*)/\1=$\1/g' originalFile.txt
key1=$key1
key2=$key2
key3=$key3

关于linux - 使用 Bash 将所有文件键替换为新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55186039/

相关文章:

bash - 如何在 bash 中执行 HTTP PUT?

sed - .bash_profile sed :\1 not defined in the RE

python - 是否可以在没有 root 访问权限的情况下将模块路径添加到 linux 中的 python 环境变量?

linux - 创建一个没有挂载的虚拟软盘镜像?

macos - .bash_profile 语法错误 : unexpected end of file

linux - 不带文件扩展名的 wc -l 输出

linux - 从文件的最后一行删除 ','

linux - 在 Bash 中解析文件名

python - 按特定字段对文件进行排序

python-3.x - 如何对 django 项目进行 cythonize?