我有一个Unix shell脚本,我想获得_和 - 之间的子串,但不是 - 和_。
示例:
cs-ui-21140322175352_8ddjdb1b4cc4a87d17034dd3704q5a0ea60d6d87-2.x86_64
我想提取:
8ddjdb1b4cc4a87d17034dd3704q5a0ea60d6d87
并将其存储在变量中。
答案 0 :(得分:2)
您可以拥有比样本输入更多的支持和其他内容。 对于您的样本输入,您可以执行类似
的操作newvar=$(echo "${inputstr}" | sed -e 's/[^_]*_//' -e 's/-.*//')
# or
newvar=$(echo "${inputstr}" | sed -e 's/.*_\(.*\)-.*/\1/')
# or
newvar=$(echo "${inputstr}" | cut -d "_" -f2 | cut -d "-" -f1)
答案 1 :(得分:1)
inputstr=cs-ui-21140322175352_8ddjdb1b4cc4a87d17034dd3704q5a0ea60d6d87-2.x86_64
newvar=`echo $inputstr | sed 's,.*_\(.*\)-.*,\1,'`