引言

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 默认按照空格进行分割,并将分隔后的值存入对应的 n变量中。如果一行还有4个单词,将被分别存储进n 变量中。如果一行还有 4 个单词,将被分别存储进 1, 2,2 ,3, 4中,其中(4 中,其中 (0) 代表整行。其中 $NF 代表最后一个字段

awk '{print $1, $2} ' ps.txt
root 10570
root 10659
root 10737
root 10782
root 10783
root 10815
root 10850
root 10930
shell 10945
awk '{print $1, $NF} ' ps.txt
root kworker/u16:0
root kworker/4:0
root kworker/6:1
shell 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 NAME
root /t 10783 /t 2 /t kworker/5:0
root /t 10815 /t 2 /t kworker/u16:0
root /t 10850 /t 2 /t kworker/4:0
root /t 10930 /t 2 /t kworker/6:1
shell /t 10945 /t 655 /t ps
-----------end------

6.Awk找出员工 PID 大于 1000 的进度信息

awk '$2 > 10800' ps.txt
USER      PID   PPID  VSIZE  RSS   WCHAN              PC  NAME
root      10815 2     0      0     worker_thr 0000000000 S kworker/u16:0
root      10850 2     0      0     worker_thr 0000000000 S kworker/4:0
root      10930 2     0      0     worker_thr 0000000000 S kworker/6:1
shell     10945 655   3788   1068           0 7f997f26ac R ps

7.Awk打印USER 为system的进程

$1代表USER,如果等于system则打印出整行

awk '$1 ~/system/' ps.txt
system    4542  683   1434148 32520 SyS_epoll_ 0000000000 S com.qualcomm.qti.notificationservice
system    4917  683   1436844 34788 SyS_epoll_ 0000000000 S org.simalliance.openmobileapi.service:remote
system    4928  683   1435396 33368 SyS_epoll_ 0000000000 S com.qualcomm.display
system    10546 683   1464360 36076 SyS_epoll_ 0000000000 S com.android.settings
system    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相关推荐

  1. android开发脚本之几个常用脚本sh

    android开发几个常用的开发脚本,其实非常简单,我们参考下面二个文档.但是,我打算直接简化,特别是对于只有一行命令的脚本,直接命令化,这样更方便使用. 1 打印Debug日志信息 该脚本打印了包含 ...

  2. Android开发最佳学习路线图

    原文地址为: Android开发最佳学习路线图       为了帮助大家更好的学习Android开发的相关知识,尚观4G智能操作系统研究室(www.up4g.com)为大家制作以下学习路线图:希望能帮 ...

  3. Android 开发高手课 温故知新篇

    首先推荐大家先阅读<Android 开发高手课>和我之前的三篇练习: Android 开发高手课 课后练习(1 ~ 5) Android 开发高手课 课后练习(6 ~ 8,12,17,19 ...

  4. Android开发权威指南(第2版)新书发布

    <Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析...

    1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...

  6. 提升Android开发效率的最佳实践

    本文属于Android入门与最佳实践系列,有兴趣的可以围观笔者的前一篇关于Android实践建议的文章:2016里一些Android最佳实践列表--Opinionated 原文地址 软件工程师的工作效 ...

  7. 用Kotlin写Android Gradle脚本

    Android应用开发中,离不开Gradle脚本的构建.大部分Android开发同学忽视了脚本的力量,甚至有很大一部分同学不知道Gradle脚本是什么,用什么语言编写的:当然,也有相当一部分同学知道G ...

  8. android开发获取应用本身耗电量_别找了,Android常用自动化工具全在这儿了!

    Android常用自动化工具 ADB - 是Google提供的为Android编写UI测试用例的自动化工具, Android开发/测试人员不可替代的强大工具 uiautomator - 是Google ...

  9. 是否可以将Java 8用于Android开发?

    本文翻译自:Is it possible to use Java 8 for Android development? Searching the web, it is not clear if Ja ...

最新文章

  1. java中的进制输出转换_Java I/O : Java中的进制详解
  2. linux du -h按文件大小,【玩转linux命令】du党
  3. python安装卡在core inter_python – 如何在我的机器上安装numpy / core ...
  4. java 扫描所有子类_java获取全部子类或接口的全部实现
  5. java中inputstream_java中InputStream String
  6. Web浏览器调试工具firebug
  7. 1910101811
  8. SpringBoot实战教程(8)| 整合mybatis-plus
  9. 预测评价系统_「机器学习」一文读懂分类算法常用评价指标
  10. VARCHART XGantt资讯:视觉计划咨询服务现已在AppSource上
  11. 对于ARX的简单介绍
  12. php 5.3.3 + 中 php-fpm 的重启、终止操作命令
  13. 农村淘宝年货节开20条品牌大街,1分钱买高品质牛奶!
  14. 证明碰撞集(HITTING SET)问题是NP完全问题
  15. php notice 性能,【OneAPM出品】解决Notice错误性能提升
  16. 解决:用MyEclipse启动tomcat 报错cannot not find the main class
  17. pytorch、tensorflow之生成one-hot向量
  18. linux connect 超时时间,Linux下connect超时处理【总结】
  19. 省钱兄(APP+H5+公众号+小程序)自营商城源码分销系统社区团购线上线下核销吃喝玩乐系统源码前端模板
  20. 【EI会议|检索稳定】2021信息、控制及自动化国际学术会议(ICICA 2021)

热门文章

  1. UOS系统怎么进入开发者模式教程
  2. 格式化 NameNode 提示 SHUTDOWN_MSG: Shutting down NameNode at xxx/xxx.xxx.xxx.xxx
  3. unwallet奖金制度解析
  4. 浮点数例外(吐核)错误
  5. Mysql删除分区,增加分区,分区数据清理
  6. 国开计算机专业英语答案,2021国开河北《计算机专业英语阅读》形考任务1-4题库.docx...
  7. KEBA机器人控制器简介
  8. Mysql数据库备份和还原
  9. 华为智慧屏和鸿蒙系统对比,华为s55和v55i对比_华为智慧屏s55和v55i哪个好
  10. 视觉SLAM笔记(33) 对极约束求解相机运动