![변수 끝에 문자열이 있는 줄을 추가하려면 어떻게 해야 합니까?](https://linux55.com/image/149885/%EB%B3%80%EC%88%98%20%EB%81%9D%EC%97%90%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EC%A4%84%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
파일에 다음 줄이 있습니다
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