我有一个带有以下模式的字符串
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