이러한 쌍이 많은 텍스트 파일의 키 값 쌍에서 값 텍스트를 추가하는 방법

이러한 쌍이 많은 텍스트 파일의 키 값 쌍에서 값 텍스트를 추가하는 방법

내용이 포함된 텍스트 파일이 있습니다 keyvalue.txt.

one=abc
two=def
three=ghi
four=jkl
five=mno
six=pqr

xyz이제 나는 될 가치 에 추가하고 싶습니다 .three

three=ghixyz

생성된 파일 콘텐츠는 다음과 같아야 합니다.

one=abc
two=def
three=ghixyz
four=jkl
five=mno
six=pqr

쉘 스크립트에서 이를 수행할 수 있는 방법이 있습니까?

답변1

여러 가지 방법이 있습니다.예를 들어그리고 sed:

sed -i 's/^RELEASESTATUS=.*/&xyz/' keyvalue.txt

RELEASESTATUS=이는 전체 줄(thanks)과 일치하는 ( )로 시작하는 줄을 찾고 .*해당 줄을 줄의 내용( )으로 바꾸고 &그 뒤에 가 옵니다 xyz.

답변2

~처럼스티븐의 대답, 그러나 약간 다르게 수행됩니다.

sed -i '/^RELEASESTATUS=/s/$/xyz/' keyvalue.txt

전체 줄을 자체 복사본으로 바꾸고 끝에 일부 텍스트를 추가하는 대신 먼저 올바른 줄( RELEASESTATUS=맨 처음)을 찾은 다음 해당 줄 끝에서 원하는 텍스트를 바꿉니다.

s이는 대체 명령( )의 일반적인 형식이 다음과 sed같다는 사실을 이용합니다.

start,end s/pattern/replacement/flags

여기서 startend는 시작 주소와 끝 주소로 명령이 적용되어야 하는 행 범위를 제공합니다("주소"는 행 번호, 정규식 또는 오프셋일 수 있음). 단일 주소를 사용하는 경우 명령은 해당 줄(또는 특정 정규식과 일치하는 단일 줄)에만 적용됩니다.

답변3

다음을 시도해 볼 수도 있습니다 awk.

awk 'BEGIN { FS = OFS = "=" }; $1 == "RELEASESTATUS" { $2 = $2"xyz"; }; 1' keyvalue.txt

이미 가지고 있거나 GNU awk 4.1.0나중에 할 수 있는 경우:

gawk -i inplace -v INPLACE_SUFFIX=.bak 'BEGIN { FS = OFS = "=" }; $1 == "RELEASESTATUS" { $2 = $2"xyz"; }; 1' keyvalue.txt

관련 정보