如何後「=」由sed的分離器獲得的第二個字(字符串)(需要忽略空格)靜息聯合如何通過sed的
例如
後「=」分離器獲得的第二個字(字符串)echo " bla bla word word1 = strin1 string2 " | sed .....
我應該得到字符串2
另一個例子
echo " bla bla word word1 =swhsw 123 " | sed .....
我應該得到123
如何後「=」由sed的分離器獲得的第二個字(字符串)(需要忽略空格)靜息聯合如何通過sed的
例如
後「=」分離器獲得的第二個字(字符串)echo " bla bla word word1 = strin1 string2 " | sed .....
我應該得到字符串2
另一個例子
echo " bla bla word word1 =swhsw 123 " | sed .....
我應該得到123
我相信awk
是這種情況下更好的解決方案,只需使用。
echo "bla bla word word1 = strin1 string2" | awk -F"=" '{print $2}' | awk '{print $2}'
$ echo " bla bla word word1 = strin1 string2 " | sed 's/.[^=]*=\(.[^ \t]*\)[ \t]*\(.[^ \t]*\)\(.*\)/\2/'
string2
$ echo " bla bla word word1 =swhsw 123 " | awk -F"=" '{split($2,a," ");print a[2]}'
123
你怎麼樣開始閱讀了如何使用sed/awk?
這個答案是純粹的GNU SED:
export text=" bla bla word word1 = string1 string2 string3 ";
echo "$text" | sed 's/.*= \?[a-zA-Z0-9]* \([a-zA-Z0-9]*\).*/\1/';
我改變一點點的字符串,因爲可能有更多的話,如果這個詞是不是最後的規則將發生變化。
讓我們解釋一下這個:等號之前的所有字符:
.*=
。.*= /?
:這是主要部分,相當於我留下空白 空間,我把/?,這意味着一個或零的出現,不知道 如果你將留在這裏的空間。[a-zA-Z0-9]*
a-z A-Z 0-9所有出現的字(string1)。\([a-zA-Z0-9]*\)
再次獲取a-zA-z0-9的所有貨幣,第二個單詞。\).*
所有其他的東西。/\1/
將輸出您在\(\)之間的所有內容。我希望這有助於某人。
I perfrom echo「bla bla word word1 = strin1 string2」| awk -F「=」'{print $ 2}'我得到了strin1 string2(爲什麼它不只是打印string2?) – lidia 2010-07-22 11:33:28
hi anders:我只需要隔離之後的第二個單詞,不是所有的單詞在隔離之後,你可以根據即 lidia – lidia 2010-07-22 11:37:32
@lidia固定。在這個例子中它打印了字符串2。 – Anders 2010-07-22 11:39:45