다음 패턴의 문자열이 있습니다
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
사용밀러그리고DKVP: 키-값 쌍체재:
$ echo 'SrcWorkspaceName=abc_1234;SrcEndVer=1409;Lang=ENU,FRA,NLD' |
mlr --dkvp --fs ';' put '$SrcEndVer = 1600'
SrcWorkspaceName=abc_1234;SrcEndVer=1600;Lang=ENU,FRA,NLD
답변3
다른 정보가 제공되지 않으므로 다음 sed 명령을 시도해 보겠습니다.
sed -i -e 's/\(.*;SrcEndVer=\)[^;]*\(;.*\)/\11600\2/' file.txt
그 안에는 file.txt
문자열이 포함된 파일이 있습니다.
s는 sed의 대체 명령입니다.
s/pattern1/pattern2/는 패턴1을 패턴2로 대체합니다. 패턴1은
\(xxx\)
역참조이며 \1과 같은 숫자로 참조됩니다.
sed는 ;SrcEndVer=를 포함하여 첫 번째 역참조 \(.*;SrcEndVer=\) 앞에 모든 것을 배치하고 ' SrcWorkspaceName=abc_1234;SrcEndVer=
;'가 아닌 문자만큼 [^;]*을 배치 1409
하고 두 번째 역참조에는 \(다음 ';' 및 . *\) 나머지 줄 ;Lang=ENU,FRA,NLD
.
SrcWorkspaceName=abc_1234;SrcEndVer=
sed는 이를 첫 번째 역참조 \1 , 그 다음 1600 및 두 번째 역참조 \2 로 바꿉니다 ;Lang=ENU,FRA,NLD
.
그러면 다음이 제공됩니다.
SrcWorkspaceName=abc_1234;SrcEndVer=1600;Lang=ENU,FRA,NLD