文档章节

linux awk命令

w
 waterme
发布于 2016/07/09 23:28
字数 770
阅读 3
收藏 0

简介

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。

awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

awk {patten+action} file

查看/etc/passwd的内容

#cat /etc/passwd -n

root@safecode:~# cat /etc/passwd -n
     1  root:x:0:0:root:/root:/bin/bash
     2  daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
     3  bin:x:2:2:bin:/bin:/usr/sbin/nologin
     4  sys:x:3:3:sys:/dev:/usr/sbin/nologin
     5  sync:x:4:65534:sync:/bin:/bin/sync

显示每行的第一个字符和最后一个字符中间以TAB键分割

#cat /etc/passwd | awk -F ':'  '{print $1"\t"$7}'

root /bin/bash

daemon /bin/bash

……

awk是一行一行的读取数据,-F ':'即已:号对每一行的数据进行分割,分割后$1代表从左到右第一个字符,$2代表第二个字符,$3代表第三个字符,$n代表第n个字符。$0代表全部字符。

awk搜索

awk搜索就是按照一定的patten对文件进行查找

搜索/etc/passwd有root关键字的所有行

#awk -F: '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash

这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)。

搜索支持正则,例如找root开头的: awk -F: '/^root/' /etc/passwd

 

搜索/etc/passwd有root关键字的所有行,并显示对应的shell

# awk -F: '/root/{print $7}' /etc/passwd             
/bin/bash

 这里指定了action{print $7}

awk编程

 变量和赋值

除了awk的内置变量,awk还可以自定义变量。

下面统计/etc/passwd的账户人数

awk '{count++;print $0;} END{print "user count is ", count}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
......
user count is  40

count是自定义变量。之前的action{}里都是只有一个print,其实print只是一个语句,而action{}可以有多个语句,以;号隔开。

 

这里没有初始化count,虽然默认是0,但是妥当的做法还是初始化为0:

awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd
[start]user count is  0
root:x:0:0:root:/root:/bin/bash
...
[end]user count is  40

 

统计某个文件夹下的文件占用的字节数

ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'
[end]size is  8657198

 


本文转载自:http://blog.csdn.net/feihongxueni/article/details/50996497

共有 人打赏支持
w
粉丝 0
博文 27
码字总数 0
作品 0
海淀
私信 提问
9.6/9.7 awk(上、下)

9.6 awk命令(上) >awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式...

Champin
2017/11/22
0
0
linux下grep、awk和sed工具用法概览

linux下grep、awk和sed工具用法概览 在linux下,grep、awk和sed是非常强大的文本处理工具,其中grep命令主要用作文本搜索,而awk和sed命令侧重于文本的编辑等操作,另外awk本身还可以是编程语...

小陶小陶
2018/09/11
0
0
linux`操作文本的三大利器

、、是操作文本的三大利器,也是必须掌握的命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属功能最强大,但也最复杂。更适合单纯的查找或匹配文本,更适合编辑匹配到的文本,更适...

丁典
2018/07/30
0
0
Linux Shell 文本处理工具集锦

Linux Shell 文本处理工具集锦 本文将介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是最常用和最为实用...

平凡之路
2014/10/13
0
0
使用AWK的六个技巧

使用AWK的六个技巧 发表于:2011-1-18 Awk一直是我爱与恨交织的源泉。它是一个功能强大的命令;有了它,建立真正的程序都是有可能的。 本文,你可以用我的六个例子,在你喜欢的终端上感受一下...

xyxzfj
2011/01/19
485
0

没有更多内容

加载失败,请刷新页面

加载更多

源码方式安装go

参考官方文档: https://golang.org/doc/install/source#environment 1) 下载 go1.4-bootstrap-20171003.tar.gz (注,其他版本1.4编译可能会有问题) 2) 编译1.4 $ cd /path/to/go1.4/src......

狐狸老侠
13分钟前
0
0
限流从概念到实现

并发数限流 并发数限流限制的是同一时刻的并发数,所以不考虑线程安全的话,我们只要用一个int变量就能实现,伪代码如下: int maxRequest=100;int nowRequest=0;public void request(...

微笑向暖wx
17分钟前
1
0
JUC多线程核心知识-思维导图

薛定谔的旺
20分钟前
0
0
我在达摩院,破了第一个案件

摘要: 在发达国家,“警民比”达到万分之四十,即使放眼在国际社会,平均也在万分之三十。 1 在发达国家,“警民比”达到万分之四十,即使放眼在国际社会,平均也在万分之三十。 在中国,“...

阿里云官方博客
34分钟前
1
0
shell日志搜索命令

cat tac grep sed 指定时间段查询 sed -n '/2019-01-22 18:00:00/,/2019-01-22 18:30:36/p' stdout.log| grep xxx 倒着查 tac stdout.log|grep -a20 exception --color......

writeademo
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部