在 bash 中,我有一个字符串,我试图删除字符串中间的一个字符。我知道我们可以像这样从字符串的开头或结尾删除字符:
myVar='YES'
myVar="${myVar#'Y'}"
myVar="${myVar%'S'}"
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能删除中间的那个?
cho*_*oba 24
如果您知道要删除哪些字符,则可以在参数扩展中使用替换:
myVar=${myVar/E} # Replace E with nothing
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道要保留哪些字符:
myVar=${myVar/[^YS]} # Replace anything but Y or S
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道该职位:
myVar=${myVar:0:1}${myVar:2:1} # The first and third characters
Run Code Online (Sandbox Code Playgroud)
要仅删除第一个字符而不删除其余字符,请使用单斜杠,如下所示:
myVar='YES WE CAN'
echo "${myVar/E}"
# YS WE CAN
Run Code Online (Sandbox Code Playgroud)
要删除所有,请使用双斜杠:
echo "${myVar//E}"
# YS W CAN
Run Code Online (Sandbox Code Playgroud)
您不仅可以替换单个字符,还可以替换长正则表达式模式。在此处查看变量扩展/子字符串替换的更多示例。