gpt4 book ai didi

linux - Bash:如何在跳过 key=value 的特定实例时始终如一地替换等号后面的内容?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:30 24 4
gpt4 key购买 nike

在配置文件中,我希望始终替换特定“key=xxxx”等号后面的任何内容,但跳过“key=specificvalue”的所有实例。等号后面的值可以是除“specificvalue”之外的任何值。

如何在 bash shell 脚本中执行此操作?

文件名为 caConfig.txt。我需要修改的行以 commonName 开头,后跟空格和等号。我想用传递的参数 $1 替换右边的内容。

commonName                      = supplied

commonName = supplied

commonName = walmart-sam.local.lan

我需要跳过前两行,修改第三行中的任何内容。我宁愿不指望行的顺序。

最佳答案

我会说使用 AWK:

awk -v a="$1" '/^commonName/ && $3 != "supplied" { $3=a } { print }' caConfig.txt

对于以“commonName”开头的任何行,如果未“提供”原始值,则将第三列替换为 $1

代替 { print } 打印每一行,您可以只输入 1:

awk -v a="$1" '/^commonName/ && $3 != "supplied" { $3 = a } 1' caConfig.txt

如果你想修改文件,你可以使用间接:

awk 'commands' > tmp && mv tmp caConfig.txt

或者如果你的 gawk 版本 >= 4.1.0,你可以使用 inplace 模块:

awk -i inplace 'commands' caConfig.txt

关于linux - Bash:如何在跳过 key=value 的特定实例时始终如一地替换等号后面的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22309038/

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