sed + 替换特定语法后的内容

Sed + replacing the content after specific syntax

我们尝试替换group word后面第三个字段的内容,

文件中的以下行始终具有相同的语法,除了更改的第三个字段

"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\": \"\)[*]*/$var/"  file

假设:

  • 所有引用都是"。请参阅上面@Gordon 的评论。
  • 您想替换每行中的第 3 个字段。
  • 替换值存储在变量中。
  • 我在这个文件内容(文件名data.txt)上测试了我的命令:

    "groups": [{"group": "MOVIES.ARE.GOOD”}],  
    
    "groups": [{"group": "no_one.ok”}],
    
    "groups": [{"group": "evry_one.lol”}],
    
    "groups": [{"group": "NO_VALUES_ARE-GOOD”}],
    
    "groups": [{"group": "___scripts”}],
    

这对我有用:

newword=TATA
sed -i "s/\(group\": \"\).*/$newword\"\}\],/"  data.txt

基本上,group": " 之后的所有内容都被 TATA"}],

替换

我的结果文件现在包含:

"groups": [{"group": "TATA"}],

"groups": [{"group": "TATA"}],

"groups": [{"group": "TATA"}],

"groups": [{"group": "TATA"}],

"groups": [{"group": "TATA"}],