我想提取子字符串:
"1.0.119"
来自:
"/abc/efg/v/y-1.0.119.u"
怎么做?
(我从管道中获取整个字符串)
由于
答案 0 :(得分:0)
> echo "/abc/efg/v/y-1.0.119.u" | cut -d'-' -f2 | cut -d'.' -f1-3
1.0.119
cut -d'-' -f2
返回第一个-
之后的内容。 cut -d'.' -f1-3
返回第三个.
之前的内容。答案 1 :(得分:0)
您可以将最后-
和最后.
之间的字符与Bash正则表达式匹配:
$ [[ "/abc/efg/v/y-1.0.119.u" =~ [^-]+-(.*)\. ]] && echo "${BASH_REMATCH[1]}"
1.0.119
或sed
具有相同的模式:
$ echo "/abc/efg/v/y-1.0.119.u" | sed 's/^\([^-]*-\)\(.*\)\(\..*$\)/\2/'
1.0.119
答案 2 :(得分:-1)
echo "/abc/efg/v/y-1.0.119.u" | sed 's/\(^.*-\)\(.*\)\(\..*$\)/\2/'
使用sed将文本分成三个部分,用括号分隔并仅打印第二部分。