您的位置:首页 > 运维架构 > Shell

在shell中进行字符串处理的小尝试

2012-10-15 10:07 127 查看
任务:对程序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

新手,欢迎各位指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息