2012-12-08 83 views
0

如何從v1+r0.68提取68使用SED或AWK進行碼型提取

+8

這個問題最根本的問題是,你已經給了我們不知道什麼的* *一般輸入的形式,也不是什麼定義所需的輸出想法。只有一個案例與「{print」68「}」一起工作是一個有效的解決方案。 – dmckee

回答

1

使用sed來獲得最後點之後的數字:

echo 'v1+r0.68' | sed 's/.*[.]\([0-9][0-9]*\)$/\1/' 
+0

爲什麼不使用角色類? (\ d)+ $/\ 1 /' – Madbreaks

+0

當你這樣做的人投票你,因爲它是GNU sed具體 – perreal

+0

感謝perreal,你有我的+1 – Madbreaks

1

的grep善於提取的東西:

kent$ echo " v1+r0.68"|grep -oE "[0-9]+$" 
68 
0

man grep

,你會看到

...

-o, --only-matching 

      Show only the part of a matching line that matches PATTERN. 

然後鍵入echo 'v1+r0.68' | grep -o '68'

如果你想讓它在任何地方做特殊:

echo 'v1+r0.68' | grep -o '68' > anyWhereSpecial.file_ending 
4

用awk,返回後的最後一切'。

echo "v1+r0.68" | awk -F. '{print $NF}' 
1

匹配使用grep行結束前的數字串:

$ echo 'v1+r0.68' | grep -Eo '[0-9]+$' 
68 

還是一個.

$ echo 'v1+r0.68' | grep -Po '(?<=\.)\d+' 
68 

打印一切後,任何數字匹配.awk後:

echo "v1+r0.68" | awk -F. '{print $NF}' 
68 

替代之前的所有.sed

echo "v1+r0.68" | sed 's/.*\.//' 
68