파일에 다음 줄이 있습니다
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