2014-03-28 101 views

回答

1
foo="Executed: variable_name" 
echo ${foo##* }  # Strip everything up to and including the rightmost space. 

set -- $foo 
echo $2 

與使用的awk,sed和諸如此類的東西,這些都不叉其它程序和節省數千CPU週期,因爲他們在你的shell完全執行,其他的解決方案。他們也更便攜(不像${i/* /},這是一種抨擊)。

0

隨着

echo "Executed: variable_name" | sed 's/[^:]*: //' 
0

用awk:

echo 'Executed: variable_name' | awk -F' *: *' '{print $2}' 
variable_name 
0

如果你有一個變量的字符串:

$ i="Executed: variable_name" 
$ echo ${i/* /} 
variable_name 

如果你有字符串作爲命令的輸出

$ cmd 
Executed: variable_name 
$ cmd | awk '{print $NF}' 
variable_name 

請注意'NF'表示「字段數」,所以$ NF總是線上的最後一個字段。假設字段,用空格(除非指定-F) 分隔如果你的變量名可以有它的空間,前面提到的

-F' *: *'

確保只有「:」作爲一個字段分隔符。但是,如果有的話,這將保留行尾的空格。

如果該行與其他輸出混合在一起,則可能需要過濾。

要麼的grep ..

$ cmd | grep '^Executed: ' | awk '{print $NF}' 

或更聰明AWK ..

$ cmd | awk '/^Executed: /{print $NF}'