使用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
使用grep
与perl regex
:\K
是背后的正面外观。和[^.]+
的意思是,任何东西直到看到字面点。
var=$(command....)
这被称为命令替换。希望现在转储是有用的。
答
使用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
请解释如果可能的话,而不是仅仅倾销代码。谢谢! – Difster