如何在linux中更改字符串中值的内容
Posted
技术标签:
【中文标题】如何在linux中更改字符串中值的内容【英文标题】:How would I change the contents of a value in a string in linux 【发布时间】:2022-01-09 08:08:52 【问题描述】:如果我有一个看起来像这样的字符串,我将如何将第一个值更改为 true,然后在另一个调用中,将第二个值更改为 true
echo "\"item0\":\"$item0\", \"item1\":\"$item1\", \"item2\":\"$item2\", \"item3\":\"$item3\", \"item4\":\"$item4\", \"Success1\":false, \"Success2\":false, \"item4\":\"$item4\", \"item5\":\"$item5\"" > curldata.txt
这是我在第一种情况下想要的输出
echo "\"item0\":\"$item0\", \"item1\":\"$item1\", \"item2\":\"$item2\", \"item3\":\"$item3\", \"item4\":\"$item4\", \"Success1\":true, \"Success2\":false, \"item4\":\"$item4\", \"item5\":\"$item5\"" > curldata.txt
我见过其他可以根据行改变区域的方法,但我不确定字符串中有很多引号和相似之处
【问题讨论】:
您正在将echo
输出发送到文件;你想在之后编辑文件吗?您是否希望(以某种方式)修改echo
命令之前 写入文件?首先如何构建这个字符串(为什么不使用所需的true
条目构建它)?字符串是否有可能最初存储在变量中?
第一个“值”是否总是false
? “值”条目是否总是与Success1
和Success2
相关联?是否总会有just 2 个值需要修改? (对我来说)不清楚我们是否只是将 2x false
条目替换为 2x true
条目,或者我们是否还必须考虑字段名称/标签和/或可变数量的字段/值.. . ?
我在拉东西,然后推东西。因此,在每个命令之后,如果成功,我将更新我的文件。如果它不成功,那么它将结束脚本并将其保存在一个文件中,另一个脚本将访问该文件。总是只有这两个值会被修改,没有别的。并且总是以 false 开头,然后改为 true
【参考方案1】:
jq '.Success1 = true | .Success2 = true' curldata.txt | sponge curldata.txt
相应地调整真/假值。
sponge
位于 moreutils
包中。
【讨论】:
这都是在 gitlab 管道中运行的。 gitlab 中可以访问海绵吗?in a gitlab pipeline. Is sponge accessible in gitlab?
这取决于所使用的 gitlab-runner... 但如果它是 docker executor 的默认设置,请使用 docker 容器,您可以在其中安装东西并安装所需的所有依赖项,例如 jq或海绵。以上是关于如何在linux中更改字符串中值的内容的主要内容,如果未能解决你的问题,请参考以下文章