gpt4 book ai didi

linux - 用字符串替换文件中的一行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:05 27 4
gpt4 key购买 nike

我有一个包含以下内容的文件 file1

{"name":"clio5", "value":"13"}
{"name":"citroen_c4", "value":"23"}
{"name":"citroen_c3", "value":"12"}
{"name":"golf4", "value":"16"}
{"name":"golf3", "value":"8"}

我想查找包含单词 clio5 的行,然后用以下字符串替换找到的行

string='{"name":"clio5", "value":"1568688554"}'

最佳答案

$ string='{"name":"clio5", "value":"1568688554"}'
$ awk -F'"(:|, *)"' -v string="$string" 'BEGIN{split(string,s)} {print ($2==s[2]?string:$0)}' file
{"name":"clio5", "value":"1568688554"}
{"name":"citroen_c4", "value":"23"}
{"name":"citroen_c3", "value":"12"}
{"name":"golf4", "value":"16"}
{"name":"golf3", "value":"8"}

$ string='{"name":"citroen_c3", "value":"1568688554"}'
$ awk -F'"(:|, *)"' -v string="$string" 'BEGIN{split(string,s)} {print ($2==s[2]?string:$0)}' file
{"name":"clio5", "value":"13"}
{"name":"citroen_c4", "value":"23"}
{"name":"citroen_c3", "value":"1568688554"}
{"name":"golf4", "value":"16"}
{"name":"golf3", "value":"8"}

根据@dogbane 的评论更新了上面的内容,因此即使文本包含 " 也能正常工作。如果文本可以包含 ":",它仍然会失败(有适当的转义),但这似乎不太可能,OP 可以告诉我们这是否是一个有效的问题。

关于linux - 用字符串替换文件中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17790340/

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