변수 끝에 문자열이 있는 줄을 추가하려면 어떻게 해야 합니까?

변수 끝에 문자열이 있는 줄을 추가하려면 어떻게 해야 합니까?

파일에 다음 줄이 있습니다

more file


USA_FORMAT="-XX:LOP83746=5M -XX:+YU3635-2837"

또한 끝에 다음 문자열(라인)을 추가하고 싶습니다.미국 형식바꾸다

/usr/jdk64/jdk1.8.0_112/man/man1/jarsigner.1 /usr/hdp/2.6.4.0-91/spark2/examples/jars 6 3 END

"usr/jdk64/jdk1.8.0_112/man/man1/jarsigner.1 /usr/hdp/2.6.4.0-91/spark2/examples/jars 6 3 END"sed 또는 Perl 한 줄/다른 방법을 통해 변수에 줄을 추가하는 방법은 무엇입니까?

참고 - 추가 전 변수 내용은 다를 수 있습니다.

예상 출력:

USA_FORMAT="-XX:LOP83746=5M -XX:+YU3635-2837 usr/jdk64/jdk1.8.0_112/man/man1/jarsigner.1 /usr/hdp/2.6.4.0-91/spark2/examples/jars 6 3 END"

답변1

sed -e '/^USA_FORMAT=/s,"$, /usr/.../jarsigner.1 /usr/.../jars 6 3 END",'

즉, 로 시작하는 줄에서 USA_FORMAT=끝 부분을 다음 "으로 바꿉니다 /usr/...END"(마지막 인용문은 새 문자열의 끝에 있습니다). 쉘 스크립트인 경우 실제로 기존 따옴표를 무시하고 대신 새 따옴표 세트가 포함된 새 섹션을 추가할 수 있습니다. 당신은 그것을 얻을 것이지만 var="foo""bar"그것은 완전히 유효합니다.

또는 Perl에서도 유사합니다:

perl -pe 's,"$, /usr/.../jarsigner.1 /usr/.../jars 6 3 END", if /^USA_FORMAT=/'

또는

export repl='/usr/ ... END'
perl -pe 's/"$/ $ENV{repl}"/ if /^USA_FORMAT=/'

s따라서 대체 문자열에 포함되지 않은 내용을 기준으로 구분 기호를 선택할 필요가 없습니다 .

답변2

bash 쉘 터미널의 'd'에 있는 데이터를 실행하십시오.

append='/usr/jdk64/jdk1.8.0_112/man/man1/jarsigner.1 /usr/hdp/2.6.4.0-91/spark2/examples/jars 6 3 END'
sed -E "/USA_FORMAT=.+/ s~~&$append~" d

관련 정보