ファイルに次の行があります
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 1行/別の方法で変数に行を追加するには?
注 - 追加の全変数の内容は異なる場合があります。
予想出力:
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