sed:如何替换找到的模式的最后一位数字

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

同事们,找不到解决办法:

我有一个具有相同序列的文件: ..."TargetGroupArn": "randomsetishere-green/e23cf778ec867027", "Weight": 100 }, { "TargetGroupArn": "randomsetishere-blue/a474ffa6a7667868", "Weight": 0 } ....

我需要 搜索并替换 -green 的权重值 (1....100)。

正如我所见,我需要搜索序列 -green/[任何符号]", "Weight": [1-3 个数字符号] 并替换为 -green -green/[同一组符号]", "Weight “:[我自己的号码]。

寻找所需的并不难:

's/-green\/.*Weight": [0-9]*'

不知道如何“保存”找到的“相同的任何符号”并使用 sed 将其添加到替换模式。

寻找所需的并不难:

's/-green\/.*Weight": [0-9]*'

但是如何返回这样的东西(粗体必须替换为已经找到的)

's/-green\/.*Weight": 100'

我正在考虑搜索模式并在此模式末尾反转“:[0-9] *”到“:100”

text sed
1个回答
0
投票

这会将数字替换为 999:

sed 's=\(-green/[^"]*", "Weight": \)[0-9]*=\1999='
  1. 它使用
    =
    而不是
    /
    作为替换分隔符,以防止需要反斜杠。
  2. 它使用
    [^"]*
    而不是
    .*
    ,否则
    .*
    将匹配线路上的最后一个
    Weight
  3. 它捕获直到数字的字符串,并在替换中使用捕获的值 (
    \1
    )。这样,直到数字本身的所有内容都保持不变。
© www.soinside.com 2019 - 2024. All rights reserved.