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. 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人

    真正掌握一种算法,最实际的方法,完全手写出来. LSTM(Long Short Tem Memory)特殊递归神经网络,神经元保存历史记忆,解决自然语言处理统计方法只能考虑最近n个词语而忽略更久前词语 ...

  2. 关于JavaScript的框架和库

    0----无所不能的JavaScript: 说到javascript,最先想到的是用于网页交互的脚本语言,这是最早netscope公司开发的基于浏览器内核的语言:但是最近几年一位大牛一chorme内核 ...

  3. java 注解 知识整理

    一.前言 注解(也称为元数据)为我们在代码中添加信息提供了一种方法,它在 一定程度上将元数据与源代码文件结合在一起.它是从java 5 开始引入的.通过使用注解,我们可以将元数据保存在Java源代码之 ...

  4. ASP.NET MVC中,动态处理页面静态化 【转载】

    首先解释一下什么是动态处理页面静态化 对于需要静态化的页面,第一次访问某个Action时,会先执行Action,并在页面渲染后向Response和服务器中网站的目录下都写入需要返回的html,而第二次 ...

  5. Java小代码

    1. public class test1 {public static void main(String[] args) { Person P = new Person("gdsgds&q ...

  6. 雨燕apply项目总结

    1,数据库默认值的问题 数据库尽量是非空的,然后不设置默认值,默认值由程序来设计 因为如果程序中设计有错误,应该是空值的地方没有没有处理掉,那插入数据库的时候应该报错,但如果你设置了默认值,排查将会变 ...

  7. jquery对append进的元素的监听操作

    通常append是再页面加载完之后才加入进去的,此时使用click方法是没有效果的,应使用document.on来实现对元素的监听. 例: $(document).on("click&quo ...

  8. Vbox隐藏虚拟机,实现后台运行

    Vbox隐藏虚拟机,实现后台运行   1.进入vBox安装位置的命令行 D:\Program Files\VirtualBox> 2.执行命令: .\VBoxManage startvm Xp_ ...

  9. 简易Asset工作流

    前言: 当前比较主流的制作流程都可以按顺序细分为三个部分:资产环节(asset section),镜头环节(shot section),合成环节(composite section). 考虑到单一资产 ...

  10. 判断文件是否存在,不要用if exist和if not exist,因为他们会受到文件是否隐藏的影响,改用dir /a 命令代替

    @echo off & setlocal enabledelayedexpansionrem 判断文件是否存在,不要用if exist和if not exist,因为他们会受到文件是否隐藏的影 ...