原始文本命名为log,内容只有一行:
2010-10-12 10:46:32,663 INFO [com.peacock.rest.service.impl.MessageRestServiceImpl] - am=getUnreadMessageCount<|>ab=100<|>af=iPhone<|>adid=13288785908f5fe3fa6f1ef4a419c0cb5e5a72cc<|>aip=58.163.175.132<|>wv=1.0<|>asid=3CBCD99761FEA49C571731727C7B9EF0<|>iua=iPhone<|>pov=3.1.2<|>abt=1<|>at=2010-10-12 10:46:32<|>ar=_<|>auid=479625<|>acode=000000<|>art=0
如何以空格分割各字段:cat log|awk '{print $数字}'
分别为(默认以空格分割):
1 2010-10-12
2 10:46:32,663
3 INFO
4 [com.peacock.rest.service.impl.MessageRestServiceImpl]
... ...
如何截取以am=开头的字符串:cat log|awk '{match($0,"am=");print substr($0,RSTART)}'
这里使用了match和substr两个内置函数。其中$0表示整行记录。
对以am=开头的字符串进行<|>分割:cat log|awk '{match($0,"am=");print substr($0,RSTART)}'|awk -F "<[|]>" '{print $数字}'
这里使用管道再次调用了awk。
注意,因为<|>作为分隔符比较特殊,如果单纯使用<|>,awk会认为使用<或者>来分割。所以遇到|作为分隔符的话,使用[|]转义一下就可以了。
1 am=getUnreadMessageCount
2 ab=100
3 af=iPhone
4 adid=13288785908f5fe3fa6f1ef4a419c0cb5e5a72cc
... ...
输出每个函数以及执行它所花的时间(其中am=表示函数名,art=表示执行时间):
cat log|awk '{match($0,"am=");print substr($0,RSTART)}'|awk -F "<[|]>" '{match($0,"art=[0-9]+");art=substr($0,RSTART,RLENGTH);printf "%s %d\n",substr($1,4),substr(art,5)}'
输出:
getUnreadMessageCount 0
关键地方是使用match和substr来获取art的值。
如果有多行记录,对它们进行排序:cat log|awk '{match($0,"am=");print substr($0,RSTART)}'|awk -F "<[|]>" '{match($0,"art=[0-9]+");art=substr($0,RSTART,RLENGTH);printf "%s %d\n",substr($1,4),substr(art,5)}'|sort -k1,1 -k2rn
这里使用了sort命令和-k选项。首先根据函数名进行排序,然后再根据执行时间进行降序。
分享到:
相关推荐
sed 和 awk 使用实例 Sed 和 Awk 是两种强大的命令行工具,在 Unix 和 Linux ...通过本文的实例,我们可以看到 Sed 和 Awk 的强大能力和灵活性,从简单的文本替换到复杂的数据处理, Sed 和 Awk 都可以轻松地实现。
### AWK实例教程知识点解析 #### 一、AWK简介及背景 - **AWK**是一种功能强大的文本处理工具,最初由贝尔实验室的Alfred Aho、Peter Weinberger和Brian Kernighan共同开发,因此得名AWK。尽管这个名字听起来有些...
3. **关联数组**:awk支持使用字符串作为索引的关联数组,这使得根据特定关键字查询数据变得更加简单。 4. **内置功能**:awk提供了一系列内置函数,如数学运算、字符串处理等,大大简化了编程工作。 5. **管道支持*...
"awk编程实例"意味着这个压缩包特别关注AWK的实际应用,提供了一系列的编程示例,帮助用户理解和掌握AWK的使用技巧。这些实例可能涵盖简单的数据提取到复杂的逻辑处理,有助于提升用户在数据处理方面的技能。 总的...
例如,一个简单的Shell脚本可能这样使用Awk: ```bash #!/bin/bash # 计算一个文件中单词出现次数 cat file.txt | awk '{for(i=1; i; i++) {a[$i]++}} END{for (word in a) print word, a[word] }' ``` 这个脚本首先...
### 通用线程AWK实例知识点详解 #### 一、AWK语言简介 - **语言特点**:AWK 是一种专为文本处理而设计的编程语言,具备强大的文本处理功能和简洁的语法结构。尽管其名称可能听起来有些怪异,但AWK 的确是一种非常...
《AWK使用手册》是专为帮助读者快速掌握AWK编程语言而编写的,通过一系列具有代表性的实例和解析,让读者逐步理解并熟练运用AWK处理数据和生成报表。AWK是一种强大的文本分析工具,它能对输入数据(如文件、标准输入...
### AWK简单教材知识点解析 #### 一、AWK简介与基本语法 AWK是一种强大的文本处理工具,由Aho、Weinberger和Kernighan共同开发,名字即来源于三位开发者姓氏的首字母。AWK语言设计用于在UNIX环境中进行数据处理,...
- **在线教程**:网络上有许多免费的 AWK 教程和实例,可以帮助初学者快速上手。 - **社区论坛**:加入相关的技术社区或论坛,与其他用户交流经验、解决问题。 综上所述,AWK 是一种功能强大且易于使用的文本处理...
- **模式(Pattern)**:模式可以是正则表达式或简单的条件语句,awk会根据模式来决定是否处理当前行。 - **动作(Action)**:当模式匹配时,awk执行相应的动作,通常是一段代码,如打印、计算等。 ### 2. awk...
本书的编排顺序从基础到进阶,包含了从简单到复杂的多个实例,每个实例都旨在说明awk如何解决特定的问题。作者精心挑选了一系列范例,并在每个范例中详细解释了所使用的awk语法和指令。此外,为了方便读者学习和未来...
了解并掌握正则表达式的语法和使用,是使用sed和awk进行有效文本处理的关键。 **编写sed和awk脚本的技巧** 编写sed和awk脚本时,从简单的任务开始逐步构建是常见的方法。在sed中,可以通过组合使用各种命令来构建...
### awk实例入门教程知识点解析 #### 一、awk语言简介 awk是一种专为文本处理设计的强大脚本语言,尤其适用于数据格式化、过滤和报告生成。它的命名来源于三位创造者:Alfred Aho、Peter Weinberger 和 Brian ...
本资源包包含了关于AWK的实用资料,包括一个PDF实例教程和一个简明使用指南。 1. **AWK基础** - **变量**:AWK中的变量是自动声明的,无需预定义类型,可以是数字或字符串。 - **模式和动作**:AWK程序由模式和...
awk是Linux/Unix环境下强大的文本分析工具,常用于处理结构化的数据文件,如CSV、TSV格式或由制表符分隔的文件。..."awk小结(by ruson).pdf"文件应该包含了更多awk的实用技巧和实例,值得仔细研读。
1. **多功能性**:Awk不仅能够执行简单的文本搜索和替换任务,还能进行复杂的模式匹配和数据转换。它可以解析结构化的数据,执行数学运算,甚至可以编写完整的脚本来实现自动化任务。 2. **易用性与灵活性**:对于...
【由浅入深AWK实例】是关于UNIX文本处理工具AWK的学习教程,旨在逐步引导读者深入理解并熟练运用AWK编程。AWK是一种功能强大的语言,尤其适用于文本处理和报表生成,其语法简洁,易上手,且具有丰富的特性。 在AWK...