使用 bash/sh 脚本从字符串中删除特定和特殊字符


myVar = designers/Atom-CMP-d0b3695.zip

只需要从上面的变量中提取此字符串的一部分。

myDesiredVar = CMP-d0b3695

我已经尝试了几种方法,但仍然找不到解决此问题的合适方法?任何快速的帮助都会得到真正的重视。

使用bash字符串操作:

s='myVar = designers/Atom-CMP-d0b3695.zip'
r="${s%.*}"
r="${r#*-}"

输出:

echo "$r"
CMP-d0b3695

sed 解决方案:

res=$(sed 's/^[^-]*-([^.]*).*/1/' <<< "$myVar")
echo $res
CMP-d0b3695
myVar=designers/Atom-CMP-d0b3695.zip
myDesiredVar=$(echo "$myVar" |grep -oP '-K[^.]+')
echo $myDesiredVar
CMP-d0b3695

grepperl regex一起使用:K是为了积极看待后面。[^.]+的意思是,任何东西,直到看到字面上的点。

var=$(command....)这称为命令替换。希望现在转储有用。