如何删除 ksh shell 中字符串中最后出现的反斜杠 \

问题描述 投票:0回答:1
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 

他们都不起作用。

string sed replace solaris ksh
1个回答
0
投票

使用这个 Perl 一行代码。请注意,反斜杠

\
需要像这样转义:
\\
:

var=$(  perl -ne 's{(.*)\\}{$1} and print;' security/boot.properties )
© www.soinside.com 2019 - 2024. All rights reserved.