|
发表于 2008-5-25 17:37:46
|
显示全部楼层
Post by soccer;1854698
这是数据文件:
real 0m0.003s
real 0m0.016s
sed 's/m\(.*\)s/\1/' <file ,这个表达式就是把数据文件里的m和s删除,为了接下来的求和运算。
我的问题是:
\(.*\) 表示子匹配, 应该怎么理解?
\1 表示子匹配的第一次出现,这应该怎么理解?
谢谢
\(.*\) 匹配 0.003 或 0.016 因为这两个都在 m和s 之间
\1 就是匹配到的内容。
如果求和的话,你可以直接这样:
sed 's/.*m\(.*\)s/\1/' < file
这样就只留下 你需要的数字部分了。
当然直接求和加一个 awk 处理:
cat file|sed 's/.*m\(.*\)s/\1/'|awk '{s+=$1} END {print s}' |
|