【发布时间】:2019-12-22 16:31:54
【问题描述】:
我们尝试替换组词之后的第三个字段的内容,
文件中的以下行始终使用相同的语法,除了第三个字段发生变化
"groups": [{"group": "string”}],
第三个字段包含A-Z、a-z、数字、(_ - .)的任意组合
第三个字段总是用双引号引起来
例子
"groups": [{"group": "MOVIES.ARE.GOOD”}],
"groups": [{"group": "no_one.ok”}],
"groups": [{"group": "evry_one.lol”}],
"groups": [{"group": "NO_VALUES_ARE-GOOD”}],
"groups": [{"group": "___scripts”}],
等
我尝试使用以下 sed ,但没有成功
var=my.word__that.I.need.to.replace
sed -i "s/\(group\": \"\)[*]*/\1$var/" file
【问题讨论】:
-
这是 JSON 数据吗?如果是这样,您最好使用旨在编辑 JSON 的工具(如
jq)。此外,您当前的模式看起来像是在尝试匹配第二个字段(“group”),而不是第一个字段(“groups”);这是故意的吗?最后,第三个字段之后的右引号实际上是花哨的 unicode 引号 (”),还是纯 ASCII 引号 (")。 -
它不是json,只是看起来像json
-
你永远不会匹配
sed。你最后的'"'不是ASCII 0x22,而是一些web”多字节字符'”'。你首先需要解决这个问题——然后它会让你更容易匹配sed,例如sed 's/["][^"]*["]/"'$var'"/3' -
最后的结束引号是多字节字符序列
e2 80 9d,这正是”字符UTF-8 encoding table and Unicode characters