任务:对程序A的输出“writing found primes into result_ser_prime.txt \n\n serial time is 8.424721 seconds, found 1857859 primes, the last used primes is 5479”中提取第一个小数
首先,自然想到grep,但是注意grep的功能有些限制:
注意grep处理下列情况的方式:
1.grep是一个搜索程序,它只能搜索匹配一个正则表达式的一行的存在性.
2.grep可以对一行采取唯一的动作是把它发送到标准输出. 如果该行不匹配正则表达式,则其不被打印.
3.行的选择只基于正则表达式. 行编号或其他准则不能用于选择行.
4.grep是一个过滤器. 它可用在管道的左边或右边.
5.grep不能用于增加,删除或修改行.
6.grep不能用于只打印行的一部分.
7.grep不能只读取文件的一部分.
8.grep不能基于前面的内容或下一行来选择一行.只有一个缓冲区,它只保存当前行.
可见grep只能对行进行过滤,不能对行进行处理,所以还需编写其他的表达式。
在这一步的表达式是,grep "serial*"
接着,我们可以利用cut命令,进行下一步处理
我们可以编辑这样的命令:cut -c17-24 ,这样的缺点在于我们需要一个一个地去数数字的长度,加入出现如同8.44这样比较短的数字就容易出错。
这个时候,可以考虑使用cut -d命令,以空格作为分界符:cut -d" " -f5,5 可以看到第一个空格也算进字符里
最后,命令是这样:A | grep "serial*" | cut -d" " -f5,5
新手,欢迎各位指正