如何从这个字符串中获取一些值?
使用函数abs使用问题类型ps在0.0秒内找到总成本为8的路径搜索节点已扩展:183获胜!得分:502平均分:502.0分数:502.0胜率:1/1(1.00)记录:胜利
在此示例中,我需要总成本(8)和扩展节点(183)的值。 (也许在另一个执行中我有47个。)
我尝试了${str:119:1}
,但有时值会变为10或100而我只会得到一位数。我需要完整的价值。
答案 0 :(得分:2)
grep
可以帮助您
例如
$ grep -oP '(nodes expanded:|total cost of) [0-9]+' inputFile
total cost of 8
nodes expanded: 183
OR
如果你不是字符串那么
$ grep -oP '(nodes expanded:|total cost of) \K[0-9]+' input
8
183
答案 1 :(得分:0)
awk
可以将字符串拆分为“单词”并打印出来。例如:
$ awk '{ print $3 }' <<< 'using function abs using [...]'
abs
答案 2 :(得分:0)
提取这些数字:
$ echo "$str" | awk -v RS="" '{print $14,$21}'
8 183
如果要将这些值捕获为方便命名的shell变量:
$ cost=$(echo "$str" | awk -v RS="" '{print $14}')
$ expanded=$(echo "$str" | awk -v RS="" '{print $21}')
表明上述方法有效:
$ echo cost=$cost expanded=$expanded
cost=8 expanded=183