Bash
如何在變數末尾附加字元串?
我們在文件中有以下行
more file USA_FORMAT="-XX:LOP83746=5M -XX:+YU3635-2837"
我們還想在USA_FORMAT變數的末尾附加以下字元串(行)
/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"
sed -e '/^USA_FORMAT=/s,"$, /usr/.../jarsigner.1 /usr/.../jars 6 3 END",'
即在以 開頭的行上
USA_FORMAT=
,將結尾替換為"
(/usr/...END"
在新字元串的末尾加上最後的引號)。如果它是一個 shell 腳本,你實際上可以忽略現有的引號,而是用一組新的引號添加新的部分。你會得到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
根據替換字元串(不)包含的內容來選擇分隔符。