2013-07-30 22 views
-5

我有字符串包含路徑如何在字符串的開頭提取零件?

string="toto.titi.tata.2.abc.def" 

我想只提取2第一路徑名。所以對於上面的示例,我想從字符串中提取toto.titi

如何使用字符串操作?而不是與SED,AWK,grep的...字符串操作


例如:

tmp="${string#toto.titi.tata.*.}" 
num1="${tmp%abc*}" 
+1

你問至少2個其他問題幾乎相同,這一個。 –

+0

@sudo_O對不起,但你錯了,請仔細閱讀其他兩個問題。他們不一樣。他們是完全不同的,但他們共享相同的principe和共享相同的輸入sring。 – MOHAMED

+0

如果他們共享相同的原則和相同的輸入,我會稱這幾乎完全相同。隨着downvotes的數量和接近的選票,它似乎我不是唯一的一個。隨着時間的推移問非常類似的問題顯示沒有努力去嘗試學習。 –

回答

0

不幸的是,除非你願意用eval,我認爲你需要使用一箇中間變量:

s=${string#*.} # Remove the first component 
echo ${s#*.} # Remove the second 

這給出了字符串的移除了前兩個分量的值。如果你想留住他們,你可以這樣做:

# Remove one component at a time while there are more than two 
while echo $string | grep -q '\..*\.'; do string=${string%.*}; done 

不過說真的,你最好使用sed或其他一些工具。

+0

事實上,我希望輸出是'toto.titi'而不是'tata.2.abc.def' – MOHAMED

+0

這就是答案的後半部分提供的內容。 –

0

好的...... splitsubstring就是答案。

string [] array = "toto.titi.tata.2.abc.def".split('.'); 
array[0]+array[1] ="toto.titi"; 

"toto.titi.tata.2.abc.def".substring(0,10); 
相關問題