我有一个包含以下内容的文件 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/