2016-09-06 67 views
-1

替換字符串我有型有自己的子慶典

.. 23 { .. 

我想要的結果的字符串應該像

.. { "No":"23" .. 

我需要爲此在bash腳本。請幫忙。提前致謝。

需要其替換解決方案DD {所有出現{ 「否」: 「DD」。 'd' 是數字

回答

0

隨着sed

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

更新:

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

需要與內容替換的溶液所有出現的** DD {** with ** {「No」:「DD」**。 'D'是數字。 –

+0

@ user3317927,看我的更新。 – sat

+0

謝謝救了我的一天。 :) –

0

使用bash。

http://www.linuxjournal.com/content/bash-regular-expressions

有這個網站的腳本這表明你如何處理與匹配正則表達式。

我只是把它複製到這個答案。

#!/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 
0

匹配兩位數字,隨後通過任何數目的空間和{

$ 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" ..