android开发脚本之awk
来源:互联网 发布:巨人网络借壳大东南 编辑:程序博客网 时间:2024/05/17 06:31
引言
android开发脚本之过滤特定包名的log
这个样例中,其它的都好懂,就是awk,可能如果没有接触过,就是有点不明白是怎么回事,下面简单的讲讲awk
简介
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
使用方法
awk '{pattern + action}' {filenames}
尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
调用awk
有三种方式调用awk
命令行方式
awk [-F field-separator] 'commands' input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。
shell脚本方式
将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh
可以换成:#!/bin/awk
将所有的awk命令插入一个单独文件,然后调用:
awk -f awk-script-file input-file(s)
其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。
几个简单的使用样例
1.查看进程的信息
adb shell ps > ps.txt
查看ps.txt
cat ps.txt
2.Awk 的默认行为
默认的时候awk 打印文件中的每一行
awk '{print;}' ps.txt
3. Awk打印匹配的行
android@tesdt-Precision-T1700:~/Desktop$ awk '/com.android.phone/' ps.txt radio 2369 683 1510652 83040 SyS_epoll_ 0000000000 S com.android.phone
4.Awk仅打印指定的域
Awk包含许多内建的变量,对于每行的记录, Awk 默认按照空格进行分割,并将分隔后的值存入对应的
awk '{print $1, $2} ' ps.txtroot 10570root 10659root 10737root 10782root 10783root 10815root 10850root 10930shell 10945
awk '{print $1, $NF} ' ps.txtroot kworker/u16:0root kworker/4:0root kworker/6:1shell ps
5.Awk开始和最后的动作
Awk包含两个重要的关键字 BEGIN 和 END
BEGIN { Actions} {ACTION} # Action for everyline in a file END { Actions }
在BEGIN 节中的 Actions 会在读取文件中的行之前被执行。
而END 节中的 Actions 会在读取并处理文件中的所有行后被执行。
awk 'BEGIN {print "-------start--";}{print $1,"/t", $2,"/t", $3,"/t",$NF;}END{print "-----------end------";} ' ps.txt-------start--USER /t PID /t PPID /t NAMEroot /t 10783 /t 2 /t kworker/5:0root /t 10815 /t 2 /t kworker/u16:0root /t 10850 /t 2 /t kworker/4:0root /t 10930 /t 2 /t kworker/6:1shell /t 10945 /t 655 /t ps-----------end------
6.Awk找出员工 PID 大于 1000 的进度信息
awk '$2 > 10800' ps.txt USER PID PPID VSIZE RSS WCHAN PC NAMEroot 10815 2 0 0 worker_thr 0000000000 S kworker/u16:0root 10850 2 0 0 worker_thr 0000000000 S kworker/4:0root 10930 2 0 0 worker_thr 0000000000 S kworker/6:1shell 10945 655 3788 1068 0 7f997f26ac R ps
7.Awk打印USER 为system的进程
$1代表USER,如果等于system则打印出整行
awk '$1 ~/system/' ps.txtsystem 4542 683 1434148 32520 SyS_epoll_ 0000000000 S com.qualcomm.qti.notificationservicesystem 4917 683 1436844 34788 SyS_epoll_ 0000000000 S org.simalliance.openmobileapi.service:remotesystem 4928 683 1435396 33368 SyS_epoll_ 0000000000 S com.qualcomm.displaysystem 10546 683 1464360 36076 SyS_epoll_ 0000000000 S com.android.settingssystem 10558 683 1457292 34904 SyS_epoll_ 0000000000 S com.qualcomm.qti.ext
~操作符是和正则表达式中的值进行比较,如果匹配则打印整行
参考资料
1.http://blog.csdn.net/andyxm/article/details/5964071
awk print 学习
2.http://cache.baiducontent.com/c?m=9d78d513d99004f64caad420024c91205b43811021ca95503ac3933fc2380b1f1a33a2ac275541598cd8293259e81806bdac636f644371edc08cdf57ddb99129328a2429731d9b4118d413a9ce4432c157ca1cb6f1&p=cb72c54ad5c340f34ebe9b7c554485&newp=8b2a9702909819f100bd9b7d0d17c6231610db2151d4d5166b82c825d7331b001c3bbfb423221b02d7c4766501a44d5ee0fa3075360021a3dda5c91d9fb4c57479cf616f2842de&user=baidu&fm=sc&query=awk&qid=822412cc0003b0ee&p1=1
linux awk命令详解
- android开发脚本之awk
- Shell脚本之awk
- shell脚本之awk
- Shell 脚本学习之awk
- Shell脚本之awk篇
- shell脚本编程之awk
- 自动化脚本之Shell、awk
- Shell脚本之awk篇
- Shell脚本之awk篇
- Shell脚本之awk详解
- Shell脚本之awk详解
- Shell脚本之awk详解
- Shell脚本之awk详解
- linux脚本利器之awk
- Android开发之--脚本编程
- shell脚本之awk的简单使用
- linux-shell脚本命令之awk
- Shell脚本之awk篇(基础)
- Service组件
- nginx下基于ThinkPHP框架的网站url重写
- 中间件和微服务,Docker以及原生云架构的关系
- Spring MVC 中的 forward 和 redirect
- 单片机--1.开发环境配置以及第一个单片机程序
- android开发脚本之awk
- 如何取消edittext自动弹出软键盘这个默认行为呢?
- parseChunk学习
- filter过滤器_思维导图总结
- 深入浅出MFC学习笔记1_GetMessage、PeekMessage、TranslateMessage、DispachMessage等等用法 消息循环中的TranslateMessage函数和Dis
- python 学习简记《编程导论》CH2&CH3
- SampleTable和SampleIterator的初始化和设置
- iOS用SAX方式解析XML
- Akka并发编程——第七节:Actor模型(六)