在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
新手,欢迎各位指正
首先,自然想到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
新手,欢迎各位指正
相关文章推荐
- shell脚本编程四 ——shell字符串处理
- 使用CASE WHEN进行字符串替换处理
- shell的字符串和数字的转化(数字自动做字符串处理,变量名做字符串输出用单引号)
- JAVA中对字符串进行MD5处理
- 一个典型的简单shell字符串处理脚本
- Android使用SpannableString进行字符串的分段处理
- Shell的字符串处理
- shell脚本处理字符串常用方法
- 适合于Unix与Win32下的字符串处理类,可以以此为基类进行扩展
- Shell 正则表达式 字符串处理
- SHELL字符串处理技巧(${}、##、%%)
- 把字符串当做数组来处理进行排序
- shell中字符串处理方式
- Python对字符串进行处理
- 将字符串作为php代码进行处理
- shell字符串处理
- 构造相同hash的字符串进行攻击,这种情况应该怎么处理?JDK7如何处理?
- shell的字符串和数字的转化(数字自动做字符串处理,变量名做字符串输出用单引号)
- Logstash使用ruby和正则进行字符串处理
- Shell常用处理字符串方法(备查)