String 用它自己的子字符串bash替换字符串

String 用它自己的子字符串bash替换字符串,string,bash,shell,replace,substring,String,Bash,Shell,Replace,Substring,我有字串 .. 23 { .. 我想知道结果应该是什么样子 .. { "No":"23" .. 我需要在Bash脚本中执行此操作。请帮忙。提前谢谢 需要一个解决方案,将所有出现的DD{替换为{“否”:“DD”'D'是数字替换为sed: sed 's/\(23\)\s*{/{"No":"\1"/g' file 更新: sed 's/\([0-9]\+\)\s*{/{"No":"\1"/g' file 用bash 这个网站上有一个脚本,它向您展示了如何处理带有匹配项的正则表达式 我只是把它

我有字串

.. 23 { ..
我想知道结果应该是什么样子

.. { "No":"23" ..
我需要在Bash脚本中执行此操作。请帮忙。提前谢谢


需要一个解决方案,将所有出现的DD{替换为{“否”:“DD”'D'是数字替换为
sed

sed 's/\(23\)\s*{/{"No":"\1"/g' file
更新:

sed 's/\([0-9]\+\)\s*{/{"No":"\1"/g' file
用bash

这个网站上有一个脚本,它向您展示了如何处理带有匹配项的正则表达式

我只是把它复制到这个答案上

#!/bin.bash

if [[ $# -lt 2 ]]; then
    echo "Usage: $0 PATTERN STRINGS..."
    exit 1
fi
regex=$1
shift
echo "regex: $regex"
echo

while [[ $1 ]]
do
    if [[ $1 =~ $regex ]]; then
        echo "$1 matches"
        i=1
        n=${#BASH_REMATCH[*]}
        while [[ $i -lt $n ]]
        do
            echo "  capture[$i]: ${BASH_REMATCH[$i]}"
            let i++
        done
    else
        echo "$1 does not match"
    fi
    shift
done

匹配两位数字,后跟任意数量的空格和
{

$ s=".. 35 { .."
$ [[ $s =~ ([0-9][0-9])\ *\{ ]]
$ ms="${s/${BASH_REMATCH[0]}/{ \"No\":\"${BASH_REMATCH[1]}\"}"
$ echo "$ms"
.. { "No":"35" ..

$ s=".. 23 { .."
$ [[ $s =~ ([0-9][0-9])\ *\{ ]]
$ ms="${s/${BASH_REMATCH[0]}/{ \"No\":\"${BASH_REMATCH[1]}\"}"
$ echo "$ms"
.. { "No":"23" ..
$ s=".. 25233 { .."
$ [[ $s =~ ([0-9]+)\ *\{ ]]
$ ms="${s/${BASH_REMATCH[0]}/{ \"No\":\"${BASH_REMATCH[1]}\"}"
$ echo "$ms"
.. { "No":"25233" ..
匹配一个或多个数字,后跟任意数量的空格和
{

$ s=".. 35 { .."
$ [[ $s =~ ([0-9][0-9])\ *\{ ]]
$ ms="${s/${BASH_REMATCH[0]}/{ \"No\":\"${BASH_REMATCH[1]}\"}"
$ echo "$ms"
.. { "No":"35" ..

$ s=".. 23 { .."
$ [[ $s =~ ([0-9][0-9])\ *\{ ]]
$ ms="${s/${BASH_REMATCH[0]}/{ \"No\":\"${BASH_REMATCH[1]}\"}"
$ echo "$ms"
.. { "No":"23" ..
$ s=".. 25233 { .."
$ [[ $s =~ ([0-9]+)\ *\{ ]]
$ ms="${s/${BASH_REMATCH[0]}/{ \"No\":\"${BASH_REMATCH[1]}\"}"
$ echo "$ms"
.. { "No":"25233" ..

需要一个解决方案,将所有出现的DD{替换为{“否”:“DD”。“D”是数字。谢谢您保存了我的一天。:)