2014-03-28 62 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}'