gpt4 book ai didi

linux - 查找一个字符串并替换该字符串的整行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:32 25 4
gpt4 key购买 nike

我需要使用 shell 命令更新 yaml 文件中特定键(例如,key2)的值。我正在尝试使用 sed 但它仅在我具有特定值时才有效,例如,在本例中为 TBD 。但我想每次都更新值,而不考虑任何值。我的替换字符串也存储在一个变量中。谁能建议我应该使用什么命令?

hash.yaml file

---
key1: val1
key2: <TBD>
key3:
- val3_1
- val3_2

这是我尝试并为我工作的方法。但前提是我将“TBD”作为我的搜索关键字。

sed -i "s;<TBD>;$var;g" hash.yaml

最佳答案

您可以使用此 sed 将键 key2 的任何值替换为存储在名为 $var 的变量中的新值:

var='foobar'

sed -E "s~^([ \t]*key2:[ \t]*).*~\1$var~" hash.yml

key1: val1
key2: foobar
key3:
- val3_1
- val3_2

在表达式 ^([\t]*key2:[\t]*).* 中,我们匹配 key2: 行首,前后可选空格它。 .* 最后将匹配 key2 的任何内容。

如果您想就地编辑文件,请为 sed 使用 -i 标志:

sed -i '' -E "s~^([ \t]*key2:[ \t]*).*~\1$val~" hash.yml 

关于linux - 查找一个字符串并替换该字符串的整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40031789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com