前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文本处理小记

文本处理小记

作者头像
用户5521279
发布2020-03-23 16:47:47
8310
发布2020-03-23 16:47:47
举报
文章被收录于专栏:搜狗测试

【前言】

在平时的测试过程中,经常会遇到各种文本处理的问题,于是把遇到的常用的文本处理命令和方法进行了总结和整理。


【常用文本处理命令】

awk

代码语言:javascript
复制
1. awk脚本结构awk ' BEGIN{statements } statements2 END{ statements } '2. 工作方式1) 执行begin中语句块;2) 从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;3) 执行end语句块;特殊变量:NR NF $0 $1 $2NR:表示记录数量,在执行过程中对应当前行号;NF:表示字段数量,在执行过程中对应当前行的字段数;$0:这个变量包含执行过程中当前行的文本内容;$1:第一个字段的文本内容;$2:第二个字段的文本内容;例:打印每一行的第二和第三个字段awk '{print $2,$3}' file统计文件的行数awk ' END {printNR}' file

grep

代码语言:javascript
复制
主要用于文本搜索,它能使用正则表达式搜索文本,并把匹配的行打印出来。常用的一些参数如下:-i :  搜索时候忽略大小写-v:  反转匹配,选择没有被匹配到的内容。-w:匹配整词,精确到单词,单词的两边必须是非字符符号(即不能是字母数字或下划线)-x:仅选择与整行完全匹配的匹配项。精确匹配整行内容(包括行首行尾那些看不到的空格内容都要完全匹配)-A num:匹配到搜索到的行以及该行下面的num行-B num:匹配到搜索到的行以及该行上面的num行-C num:匹配到搜索到的行以及上下各num行
代码语言:javascript
复制
重定向输入输出
command > file    将输出重定向到 file。command < file    将输入重定向到 file。command >> file    将输出以追加的方式重定向到 file。command > /dev/null/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃

【实际应用】

1. 处理文本

在测试中,遇到了类似下面的文本处理情形:

在多行类似这样的结构文本中,需要把文字提取出来,然后计算所有文本的time总和,于是便想到了用前面的文本处理过程。 首先提取全部的文本,则需要借助part的上一行,然后把part行去掉,重定向到txt文件,就得到了当前的文本:

代码语言:javascript
复制
grep -B 1 'part' example.txt |grep -v 'part' > result.txt

然后再查找time所在的行,将第二列的数据进行累加,就得到了所求的time的总和。

代码语言:javascript
复制
grep 'time' example.txt | awk '{sum+=$2} END {print sum}'

2. 在shell脚本中使用

代码语言:javascript
复制
#!/bin/bashdate>>log.txtwhile truedoadb shell top -b -n 1|grep demo1 |awk '{print $9}'>> log1.txtadb shell dumpsys meminfo demo2|grep "TOTAL"|awk '{print $2}'|sed -n '2p' >> log2.txtsleep 1donedate>>log.txt

在测试过程中,也可以在脚本中引入,根据不同时刻的日志信息,提取出需要的信息,来辅助记录和分析。

以上就是一些文本处理命令的简单介绍,在平时的工作中遇到文本处理的问题,会比较方便快捷的解决。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档