Если это ваш суффикс, ответ должен быть таким простым:
suffix="${str##*[!_A-Za-z0-9]}"
Чтобы получить кусочки с помощью этого метода, вы можете получить в лучшем случае голову и хвост. Но вы можете получить их:
head="${str%"${tail:="${str##*[!_A-Za-z0-9]"}"}"}"
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
на основе того, что строка замены (не содержит )(s ).
позволить данным в 'd', на терминале оболочки bash делать;
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