如何在字符顺序重要的两个字符之间获取子字符串?

时间:2016-03-24 17:38:05

标签: unix substring

我有一个Unix shell脚本,我想获得_和 - 之间的子串,但不是 - 和_。

示例:

cs-ui-21140322175352_8ddjdb1b4cc4a87d17034dd3704q5a0ea60d6d87-2.x86_64

我想提取:

8ddjdb1b4cc4a87d17034dd3704q5a0ea60d6d87

并将其存储在变量中。

2 个答案:

答案 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,'`