2013-09-30 89 views
2

全部我想用AWK將下面的字符串分割爲第一部分。使用awk獲取子字符串

如何編寫AWK表達式?

#!/bin/bash 

function parsePackageName() 
{ 
    #....... here I want to get the String "pp-demo-mid" 
    #  from "pp-demo-mid-1.0-212.noarch" 
} 

採樣輸入:

pp-demo-mid-1.0-212.noarch 
pp-1.0-212.noarch 
pp-xx-1.0-212.noarch 

期望的產出:

pp-demo-mid 
pp 
pp-xx 

這意味着,我需要解析之前版本號的第一部分。

+0

正則表達式的格式很不清楚。考慮提供更多的例子 – jkshah

+0

要求:1.回聲XXX-1.6.6-5.i386 | awk -F-'{print $ 1}' - > XXX。 2 echo XXX-UU-M-1.4.3-2.noarch.rpm | awk -F-'{print $ 1}' - > XXX,但我想獲得XXX-UU-M –

+1

請更新此問題。這是否意味着版本號前的任何名稱? – jkshah

回答

3

是這樣的嗎?它將字符串分爲第一個數字。

awk -F"-[0-9]" '{print $1}' file 
pp-demo-mid 
pp 
pp-xx 

或者你可以先-xx,其中x是一個數字

awk -F"-[0-9][.][0-9]" '{print $1}' file 
+0

謝謝,這是fullfil我的需要。再次感謝你。 –

2

這裏後更加具體和devide是使用sed

sed -r 's/([^0-9]+)-.*/\1/' 

([^0-9]+)將捕獲所有非企圖數字字符在\1

+0

它也很好,謝謝 –