字符串格式为
Executed: variable_name
获取* variable_name *子字符串的最简单方法是什么?
答案 0 :(得分:1)
foo="Executed: variable_name"
echo ${foo##* } # Strip everything up to and including the rightmost space.
或
set -- $foo
echo $2
与使用awk,sed和whatnot的其他解决方案不同,这些解决方案不会分叉其他程序并节省数千个CPU周期,因为它们完全在shell中执行。它们也更具可移植性(与${i/* /}
不同,这是一种基础)。
答案 1 :(得分:0)
使用sed:
echo "Executed: variable_name" | sed 's/[^:]*: //'
答案 2 :(得分:0)
使用awk:
echo 'Executed: variable_name' | awk -F' *: *' '{print $2}'
variable_name
答案 3 :(得分:0)
如果变量中包含字符串:
$ i="Executed: variable_name"
$ echo ${i/* /}
variable_name
如果您将字符串作为命令的输出
$ cmd
Executed: variable_name
$ cmd | awk '{print $NF}'
variable_name
请注意,“NF”表示“字段数”,因此$ NF始终是该行的最后一个字段。假设字段用空格分隔(除非指定了-F) 如果你的variable_name中可以包含空格,那么
-F' *: *'
确保只使用“:”作为字段分隔符。但是,如果存在空格,这将保留行尾的空格。
如果该行与其他输出混合在一起,则可能需要进行过滤。
要么是grep ..
$ cmd | grep '^Executed: ' | awk '{print $NF}'
或更聪明的awk ..
$ cmd | awk '/^Executed: /{print $NF}'