如何使用bash命令从字符串中提取子字符串

时间:2017-04-05 14:53:34

标签: linux bash cut

我想提取子字符串:

"1.0.119"

来自:

"/abc/efg/v/y-1.0.119.u"

怎么做?

(我从管道中获取整个字符串)

由于

3 个答案:

答案 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将文本分成三个部分,用括号分隔并仅打印第二部分。