
我有一個帶有以下模式的字串
SrcWorkspaceName=abc_1234;SrcEndVer=1409;Lang=ENU,FRA,NLD
我需要用其他數字SrcEndVer
替換該值。1409
這裡的數字儲存在一個變數中,比如說
Var=1600
因此,1409
值應該替換為變數Var
例如下面的輸出
SrcWorkspaceName=abc_1234;SrcEndVer=1600;Lang=ENU,FRA,NLD
答案1
這是一種可能性:
sed 's/;SrcEndVer=[0-9]*/;SrcEndVer=1600/'
輸出:
SrcWorkspaceName=abc_1234;SrcEndVer=1600;Lang=ENU,FRA,NLD
答案2
答案3
由於沒有提供其他信息,我將嘗試以下 sed 命令。
sed -i -e 's/\(.*;SrcEndVer=\)[^;]*\(;.*\)/\11600\2/' file.txt
其中將file.txt
是一個包含您的字串的檔案。
s 是 sed 的替代指令。
s/pattern1/pattern2/ 將用pattern2 取代pattern1
\(xxx\)
是反向引用,將以數字引用,例如\1
sed 將放入第一個反向引用 \(.*;SrcEndVer=\) 之前的所有內容(包括 ;SrcEndVer=SrcWorkspaceName=abc_1234;SrcEndVer=
然後 [^;]* ),其中包含非 ';' 的所有字符1409
並在第二個反向引用中\(下一個';'和.*\)該行的其餘部分;Lang=ENU,FRA,NLD
。
sed 會將其替換為第一個反向引用 \1SrcWorkspaceName=abc_1234;SrcEndVer=
然後 1600 和第二個反向引用 \2 ;Lang=ENU,FRA,NLD
。
這會給你:
SrcWorkspaceName=abc_1234;SrcEndVer=1600;Lang=ENU,FRA,NLD