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

问题描述:

myVar = designers/Atom-CMP-d0b3695.zip 

只有部分字符串需要从上面的变量中提取。使用bash/sh脚本从字符串中删除特定和特殊字符

myDesiredVar = CMP-d0b3695 

我已经尝试了几种方法,但仍找不到合适的方法来解决这个问题?任何快速的帮助将真正apprecciated。

myVar=designers/Atom-CMP-d0b3695.zip 

myDesiredVar=$(echo "$myVar" |grep -oP '\-\K[^.]+') 

echo $myDesiredVar 
CMP-d0b3695 

使用grepperl regex\K是背后的正面外观。和[^.]+的意思是,任何东西直到看到字面点。

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

+0

请解释如果可能的话,而不是仅仅倾销代码。谢谢! – Difster

使用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