2013-11-25 169 views
0

提取的名字我怎么能提取的软件基本名称,其中的形式是这样的:Linux命令行从文本

软件-1.2.3-vd.ext 或 软件-1.2.3-vd.ext

我需要提取软件或软件,版本前的所有内容。 我看看正则表达式,但不知道如何去做。 谢谢。

+0

谷歌grep的例子 - 这应该帮助! – Ken

+0

让您从只打印名称获得软件名称的实用程序。例如,'rpm'可以轻松完成此操作。 –

回答

3

随着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 
+0

工作很好,谢谢,现在我可以确切地检查它的含义。 – user3033629

+0

不客气。它删除了第一个'-'后跟一个数字,并且后面的每个字符 – hek2mgl

1

纯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 
+1

+1不会产生额外的过程 – hek2mgl

0

用命令basename(这是专门意味着这个目的)