Sed +使用特定语法替换内容

问题描述 投票:0回答:1

我们尝试替换组词之后的第三个字段的内容,

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

"groups": [{"group": "string”}],

第三字段包含A-Za-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
bash sed redhat
1个回答
0
投票

假设:

  • 所有引号均为"。请参阅上面@Gordon的评论。
  • 您要替换每行中的第三个字段。
  • 替换值存储在变量中。
  • 我已对此文件内容(文件名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\": \"\).*/\1$newword\"\}\],/"  data.txt

基本上,group": "之后的所有内容都将替换为TATA"}],


我的结果文件现在包含:

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

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

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

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

"groups": [{"group": "TATA"}],
© www.soinside.com 2019 - 2024. All rights reserved.