1、awk的使用

1.1 基本的awk执行过程

#passwd文件的第二行的第一列和第二列

[root@xiaojin oldboy]# awk -F ":" 'NR==2{print $1,$2}' /etc/passwd

bin x

awk 参数  ‘模式{动作}’ 文件

awk 参数 ‘条件(找谁){干啥}’ 文件

1.2模式匹配:模式与动作

通过正则表达式作为模式

模拟环境

mkdir -p /server/files/

cat >>/server/files/reg.txt<<EOF

Zhang Dandan    41117397   :250:100:175

Zhang Xiaoyu    390320151  :155:90:201

Meng  Feixue    80042789   :250:60:50

Wu    Waiwai    70271111   :250:80:75

Liu   Bingbing  41117483   :250:100:175

Wang  Xiaoai    3515064655 :50:95:135

Zi    Gege      1986787350 :250:168:200

Li    Youjiu    918391635  :175:75:300

Lao   Nanhai    918391635  :250:100:175

EOF

##匹配xiaoyu的姓氏和ID号码

[root@oldboyedu01-nb files]# awk '/Xiaoyu/' reg.txt

Zhang Xiaoyu    390320151  :155:90:201

[root@oldboyedu01-nb files]# awk '/Xiaoyu/{print $1,$2,$3}' reg.txt

Zhang Xiaoyu 390320151

###awk '第2列中包含Xiaoyu' reg.txt

[root@oldboyedu01-nb files]# awk '$2~/Xiaoyu/' reg.txt

Zhang Xiaoyu    390320151  :155:90:201

[root@oldboyedu01-nb files]# awk '$2~/Xiaoyu/{print $1,$2,$3}' reg.txt

Zhang Xiaoyu 390320151

###显示所有以41开头的ID号码的人的全名和ID号码

[root@oldboyedu01-nb files]# awk '$3~/^41/'  reg.txt

Zhang Dandan    41117397   :250:100:175

Liu   Bingbing  41117483   :250:100:175

[root@oldboyedu01-nb files]# awk '$3~/^41/{print $1,$2,$3}'  reg.txt

Zhang Dandan 41117397

Liu Bingbing 41117483

###显示所有ID号码最后一位数字是1或5的人的全名

[root@oldboyedu01-nb files]# awk '$3~/[15]$/' reg.txt

Zhang Xiaoyu    390320151  :155:90:201

Wu    Waiwai    70271111   :250:80:75

Wang  Xiaoai    3515064655 :50:95:135

Li    Youjiu    918391635  :175:75:300

Lao   Nanhai    918391635  :250:100:175

[root@oldboyedu01-nb files]# awk '$3~/[15]$/{print $1,$2}' reg.txt

Zhang Xiaoyu

Wu Waiwai

Wang Xiaoai

Li Youjiu

Lao Nanhai

###显示Xiaoyu的捐款.每个值时都有以$开头.如$520$200$135

gsub(/目标/,"替换为什么",第几列)

gsub(/目标/,"替换为什么") == gsub(/目标/,"替换为什么",$0)

[root@oldboyedu01-nb files]# awk '{gsub(/:/,"$",$4)}' reg.txt

[root@oldboyedu01-nb files]# awk '{gsub(/:/,"$",$4);print}' reg.txt

Zhang Dandan 41117397 $250$100$175

Zhang Xiaoyu 390320151 $155$90$201

Meng Feixue 80042789 $250$60$50

Wu Waiwai 70271111 $250$80$75

Liu Bingbing 41117483 $250$100$175

Wang Xiaoai 3515064655 $50$95$135

Zi Gege 1986787350 $250$168$200

Li Youjiu 918391635 $175$75$300

Lao Nanhai 918391635 $250$100$175

[root@oldboyedu01-nb files]# awk '$2~/Xiaoyu/' reg.txt

Zhang Xiaoyu    390320151  :155:90:201

[root@oldboyedu01-nb files]# awk '$2~/Xiaoyu/{gsub(/:/,"$");print}' reg.txt

Zhang Xiaoyu    390320151  $155$90$201

1.3 特殊模式BEGIN和END

BEGIN{} BEGIN里面的内容,会在awk读取文件内容之前运行。

用来计算、测试

END{}*** END{}里面的内容,会在awk读取完文件的最后一行之后运行。

用来显示最终结果。

先计算,END显示结果。

##统计/etc/services文件里面的空行数量

root@oldboyedu01-nb files]# awk '/^$/{i=i+1}END{print i}' /etc/services

16

[root@oldboyedu01-nb files]# #        先计算END{显示最终结果}

统计出现多少次 计数

i=i+1 == i++

1.4  awk的数组计算

处理以下文件内容,将域名取出并根据域名进行计数排序处理:(百度和sohu面试题)

http://www.etiantian.org/index.html

http://www.etiantian.org/1.html

http://post.etiantian.org/index.html

http://mp3.etiantian.org/index.html

http://www.etiantian.org/3.html

http://post.etiantian.org/2.html

[root@oldboyedu01-nb files]# cat url.txt

http://www.etiantian.org/index.html

http://www.etiantian.org/1.html

http://post.etiantian.org/index.html

http://mp3.etiantian.org/index.html

http://www.etiantian.org/3.html

http://post.etiantian.org/2.html

[root@oldboyedu01-nb files]# awk -F "[/.]+" '{print $2}' url.txt

www

www

post

mp3

www

post

[root@oldboyedu01-nb files]# awk -F "[/.]+" '{h[$2]=h[$2]+1;print h["www"]}' url.txt

1

2

2

2

3

3

[root@oldboyedu01-nb files]# awk -F "[/.]+" '{h[$2]=h[$2]+1}END{print h["www"],h["post"],h["mp3"]}' url.txt

3 2 1

[root@oldboyedu01-nb files]# awk -F "[/.]+" '{h[$2]=h[$2]+1}END{for(pol in h) print pol,h[pol]  }' url.txt

www 3

mp3 1

post 2

总结:

1.awk数组进行统计

i=i+1  == i++   统计次数 计数

i=i+$n == i+=$n 累计相加 累加

2.awk执行过程

3.awk通过正则作为模式

4.BEGIN和END特殊模式

三剑客之awkd的基本使用的更多相关文章

  1. 文本处理三剑客之sed命令

    第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...

  2. 群体结构图形三剑客——PCA图

    重测序便宜了,群体的测序和分析也多了起来.群体结构分析,是重测序最常见的分析内容.群体结构分析应用十分广泛,首先其本身是群体进化关系分析里面最基础的分析内容,其次在进行GWAS分析的时候,本身也需要使 ...

  3. Linux三剑客之grep 与 egrep

    grep: Linux上文本处理三剑客 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep) sed:stream editor,文本编辑工具: awk:Lin ...

  4. Docker三剑客之Swarm介绍

    DockOne技术分享(二十): 我用swarm在多台物理机调度管理容器,用ovs实现跨主机的容器互联问题 [编者的话]Swarm项目是Docker公司发布三剑客中的一员,用来提供容器集群服务,目的是 ...

  5. powershell小工具,efs加解密三剑客。

    powershell  efs  加密  解密  列出  decryption  list --------前言:我编写这两个脚本的目的,大家不可不知!-------- 1 是为系统管理员,网管员编写 ...

  6. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  7. Linux实战教学笔记18:linux三剑客之awk精讲

    Linux三剑客之awk精讲(基础与进阶) 标签(空格分隔): Linux实战教学笔记-陈思齐 快捷跳转目录: * 第1章:awk基础入门 * 1.1:awk简介 * 1.2:学完awk你可以掌握: ...

  8. Intellij IDEA 2017集成MyBatis三剑客

    MyBatis三剑客指的是:MyBatis-Generate.Mybatis Plus.MyBatis-PageHelper MyBatis-Generate 使用 Mybatis Generator ...

  9. 用linux文件处理三剑客将微信群成员导出的方法

    工具: Mac/Linux 系统 Chrome Linux命令:vi.cat. wc. grep. awk. sed.sort. uniq 步骤: 1.微信网页版登陆: https://wx.qq.c ...

随机推荐

  1. javaee设计模型简介

    (一)五种模式 1.单例模式 在某些情况下,有些对象只需要一个就可以了,即每个类只需要一个实例.例如,一台计算机上的可以连接多台打印机,但是该计算机上的打印程序只能有一个,这里就可以通过单例模式来避免 ...

  2. centos tree 命令

    ftp://mama.indstate.edu/linux/tree/ download & make

  3. Btrace 拦截构造函数,同名函数

    拦截方法: 1.普通方法  @OnMethod(clazz="", method="") 2.构造函数@OnMethod(claszz="" ...

  4. PowerShell ISE:Windows Server 2008 R2默认不安装

    PowerShell ISE:Windows Server 2008 R2默认不安装,需要手动安装,在PowerShell运行如下两段脚本: Import-Module ServerManager A ...

  5. 斐讯N1折腾记

    斐讯N1折腾记:运行 Linux 及优化  2018-06-23  37条评论  4,445次阅读  11人点赞 最后更新时间:2019年03月10日 咳咳咳,上篇教程教大家给斐讯 N1 降级并且刷了 ...

  6. css 实现等分布局

    目前移动版等分布局最常用的是 flex 等分,pc 端上用得更多则是 float. 假设父元素下有 3 个子元素,每个子元素相隔 24px,子元素等分父元素宽度 实现:float + margin ( ...

  7. Sql Server查看死锁及堵塞脚本

    --每秒死锁数量 SELECT * FROM sys.dm_os_performance_counters WHERE counter_name LIKE 'Number of Deadlocksc% ...

  8. Ubuntu16.04下安装xunsearch+opencc实现php客户端的中文分词

    1.准备服务器环境 apt-get install apache2 php mysql-server apt-get install mysql-client phpmyadmin apt-get i ...

  9. 黄聪:微信h5支付demo微信H5支付demo非微信浏览器支付demo微信wap支付

    一.首先先确定H5支付权限已经申请! 二.开发流程 1.用户在商户侧完成下单,使用微信支付进行支付 2.由商户后台向微信支付发起下单请求(调用统一下单接口)注:交易类型trade_type=MWEB ...

  10. MapperScan和ComponentScan同时使用问题

    @MapperScan:1.首先了解@Mapper    在接口上添加了@Mapper,在编译之后就会生成相应的接口实现类.    不过需要在每个接口上面进行配置,为了简化开发,就有了 @Mapper ...