var=$(sed -n 's/username=\(.*\)/\1/p' security/boot.properties); echo '$var'
{AES}BjW32/nnL0m78BJ/ZOEoVzXmEWzVBVZx+8Q\=
预期输出是
{AES}BjW32/nnL0m78ef5G5B5tBJ/ZOEoVzXmEWzVBVZx+8Q=
正如您所见,最后一个
\
不应显示在输出中。
我使用的是Solaris + ksh shell。
你能推荐一下吗?
我徒劳地尝试了以下方法:
var=$(sed -n 's/username=\(.*\)/\1/p' security/boot.properties); echo "${var%/\}"
var=$(sed -n 's/username=\(.*\)/\1/p' security/boot.properties); echo "${var%/\}" | sed 's/\\$//'
var=$(sed -n 's/username=\(.*\)/\1/p' security/boot.properties); echo "${var%/\}" | sed 's/\\=$//'
var=$(sed -n 's/username=\(.*\)/\1/p' security/boot.properties); echo "${var%/\}" | awk '{gsub(/\\$/,"")}1'
var=$(sed -n 's/username=\(.*\)/\1/p' security/boot.properties); echo "${var%/\}" | rev | cut -c 2- | rev
他们都不起作用。
使用这个 Perl 一行代码。请注意,反斜杠
\
需要像这样转义:\\
:
var=$( perl -ne 's{(.*)\\}{$1} and print;' security/boot.properties )