【发布时间】:2013-11-25 19:02:31
【问题描述】:
如何提取形式类似的软件的基本名称:
软件-1.2.3-vd.ext 或者 软件-1.2.3-vd.ext
我需要提取软件或软件,版本之前的所有内容。 我看过正则表达式,但不知道该怎么做。 谢谢。
【问题讨论】:
-
google grep 示例 - 这应该会有所帮助!
-
让您从中获取软件名称的实用程序仅打印名称。例如,
rpm可以轻松做到这一点。
如何提取形式类似的软件的基本名称:
软件-1.2.3-vd.ext 或者 软件-1.2.3-vd.ext
我需要提取软件或软件,版本之前的所有内容。 我看过正则表达式,但不知道该怎么做。 谢谢。
【问题讨论】:
rpm 可以轻松做到这一点。
与sed:
echo 'software-1.2.3-vd.ext' | sed 's/\-[0-9].*//' # software
echo 'soft-ware-1.2.3-vd.ext' | sed 's/\-[0-9].*//' # soft-ware
【讨论】:
- 后跟一个数字,以及它后面的每个字符
纯 BASH 解决方案:
s="software-1.2.3-vd.ext"
echo "${s%%-[0-9]*}"
software
s="soft-ware-1.2.3-vd.ext"
echo "${s%%-[0-9]*}"
soft-ware
【讨论】:
使用命令basename(专门用于此目的)
【讨论】: