文本分析工具awk指令浅析

AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk ).

这 种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识。AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特 性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报 表,还有无数其他的功能。

1.简单过滤使用(支持行):

-awk [选项] '条件{print}' 文件

-命令 | awk

栗子:

1.找出可以登陆的用户

方法一:使用脚本grep... for i in ... 截取%%:*

方法二:sed -n '/bash$/s/:.*//p' /etc/passwd

方法三:awk -F: '/bash$/{print $1}' /etc/passwd

2.找出密码

head -1 /etc/shadom

2.初始化,处理数据,总结输出

awk 'BEGIN{X=12} /bash/{x++} END{print x}'

栗子:

输入命令:awk -F: 'BEGIN{print "名字 UID 目录"}/\/bash$/{print $1,$3,$6}END{print "总用户量:"NF}' /etc/passwd

则显示:

3.支持四则运算(+-*/)

栗子:1+3

awk 'BEGIN{X=1;Y=3;print x=y}'     #用变量

awk 'BEGIN{print 1+3}'         #非变量

4.判断条件

1)正则// $1~// $1!~//

2) 字符和数字== != > >= < <=

3)&& ||

栗子:

1)awk -F '$1=="wuke"' /etc/passwd  #wuke用户(精确)

2)awk -F '$3==0' /etc/passwd    #root用户

3)awk -F '$3>=1000' /etc/passwd #普通用户

awk内置函数:

gsub函数有点类似于sed查找和替换。它允许替换一个字符串或字符为另一个字符串或字符,并以正则表达式的形式执行。第一个函数作用于记录$0,第二个gsub函数允许指定目标,然而,如果未指定目标,缺省为$0。

index(s,t)函数返回目标字符串s中查询字符串t的首位置。length函数返回字符串s字符长度。

match函数测试字符串s是否包含一个正则表达式r定义的匹配。

split使用域分隔符fs将字符串s划分为指定序列a。

sprint函数类似于printf函数,返回基本输出格式fmt的结果字符串exp。

sub(r,s)函数将用s替代$0中最左边最长的子串,该子串被r匹配。

substr(s,p)返回字符串s在位置p后的后缀。

substr(s,p,n)同上,并指定子串长度为n。

原文发布于微信公众号 - 吴柯的运维笔记(wukeyy18s)

原文发表时间:2017-08-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP在线

PHP底层的运行机制与原理

PHP说简单,但是要精通也不是一件简单的事。我们除了会使用之外,还得知道它底层的工作原理。 PHP是一种适用于web开发的动态语言。具体点说,就是一个用C语言实...

1.4K60
来自专栏Java帮帮-微信公众号-技术文章全总结

Java设计模式-模板方式模式

模板方法模式: 定义一个操作中的算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变一个算法的结构的前提下重定义该算法的某些特定步骤. ? ...

51280
来自专栏C/C++基础

获取C++类成员虚函数地址

[1]print address of virtual member function [2]动态联编实现原理分析

11610
来自专栏ppjun专栏

Android十八章:从Android看Binder

Binder是android上的一个类 继承了IBinder,用作Ipc进程间通讯,同是帮助Serivermanager连接各种manager(activity...

6220
来自专栏爱撒谎的男孩

Struts2之获取请求参数

35860
来自专栏Java学习之路

02 Spring框架 简单配置和三种bean的创建方式

整理了一下之前学习Spring框架时候的一点笔记。如有错误欢迎指正,不喜勿喷。 上一节学习了如何搭建SpringIOC的环境,下一步我们就来讨论一下如何利...

32850
来自专栏雪地二货笔记库

如何在JSP中格式化时间

在将后台数据传回前台的时候直接传输date属性的变量不进行格式化就会产生这种情况。 若是使用的是jsp则可以使用专门进行格式化的JSTL标签。 <%@ tag...

43320
来自专栏Ryan Miao

java中byte, iso-8859-1, UTF-8,乱码的根源

Post@https://ryan-miao.github.io 测试代码https://github.com/Ryan-Miao/someTest/comm...

71570
来自专栏喔家ArchiSelf

全栈必备 Java基础

那一年,从北邮毕业,同一年,在大洋的彼岸诞生了一门对软件业将产生重大影响的编程语言,它就是——Java。1998年的时候,开始学习Java1.2,并在Java ...

14140
来自专栏Fundebug

JavaScript异步编程史:回调函数到Promise到Async/Await

摘要: 异步编程时JavaScript以及Node.js的一大亮点,其中有什么心酸的黑历史呢?

17750

扫码关注云+社区

领取腾讯云代金券