一、Awk 的两个特殊模式

  • BEGIN 和 END,BEGIN 被放置在没有读取任何数据之前,而 END 被放置在所有的数据读取完成以后执行
  • 体现如下:
    BEGIN{}: 读入第一行文本之前执行的语句,一般用来初始化操作
    {}: 逐行处理
    END{}: 处理完最后以行文本后执行,一般用来处理输出结果
  • 实例:
  • 文件开头加REDHAT,末尾加WESTOS,打印行号和内容
[root@server19 mnt]# awk -F: 'BEGIN {print "REDHAT"} {print NR;print} END {print "WESTOS"}' passwd
REDHAT
1
root:x:0:0:root:/root:/bin/bash
2
bin:x:1:1:bin:/bin:/sbin/nologin
3
daemon:x:2:2:daemon:/sbin:/sbin/nologin
4
adm:x:3:4:adm:/var/adm:/sbin/nologin
5
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6
sync:x:5:0:sync:/sbin:/bin/sync
7
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
WESTOS
  • 统计文本总字段个数
[root@server19 mnt]# vim test.txt
hui hui XX
XX
XX ni Xx [root@server19 mnt]# awk 'BEGIN{i=0}{i+=NF}END{print i}' test.txt

7

二、Awk高级应用

1. if单分支语句

  • 统计登录shell为bash的用户
[root@server19 mnt]# awk -F: 'BEGIN{i=0}{if($7~/bash$/){i++}}END{print i}' /etc/passwd
2
  • 统计/etc/passwd下uid小于500的用户个数
[root@server19 mnt]# awk -F: 'BEGIN{i=0}{if($3<500){i++}}END{print i}' /etc/passwd
31

2. if双分支语句

  • 统计uid小于等于500和大于500的用户个数
[root@server19 mnt]# awk -F: 'BEGIN{i=0;j=0}{if($3<=500){i++}else{j++}}END{print i,j}' /etc/passwd
31 9

3. for循环

  • 生成1-5序列
[root@server19 mnt]# awk 'BEGIN{for(i=1;i<=5;i++){print i}}'
1
2
3
4
5 [root@server19 mnt]# seq 5 ##seq命令可以直接生成

1

2

3

4

5

4. while循环

语法一:
[root@test ~]# awk 'i=1 {} BEGIN {while (i<3) {++i;print i}}' test.txt
1
2
3
[root@test ~]# 语法二:

[root@test ~]# awk 'BEGIN {do {++i;print i} while (i<3)}' test.txt

1

2

3

[root@test ~]#

[转帖]SHELL—— awk两个特殊模式(BEGIN 和 END)及awk高级应用(条件判断、循环)的更多相关文章

  1. Shell合并两个文件成一个文件的两列paste,awk

    Shell合并两个文件成一个文件的两列 发布时间:2014-07-20   编辑:www.jquerycn.cn Shell合并两个文件成一个文件的两列,提供了两种方法,普通shell脚本,awk脚本 ...

  2. 【转帖】两种IO模式:Proactor与Reactor模式

    两种IO模式:Proactor与Reactor模式 https://www.cnblogs.com/pigerhan/p/3474217.html. 挺好的说明了epoll和IOCP的区别 在高性能的 ...

  3. [转帖]Shell运维手册

    shell实例手册    https://github.com/liquanzhou/ops_doc   0 说明{       手册制作: 雪松   更新日期: 2018-09-11       欢 ...

  4. [转帖]shell中的特殊符号总结

    http://www.embeddedlinux.org.cn/emb-linux/entry-level/201907/18-8747.html 在shell中常用的特殊符号罗列如下: # ;   ...

  5. [转帖]IIS7.5应用程序池集成模式和经典模式的区别介绍

    IIS7.5应用程序池集成模式和经典模式的区别介绍 之前转帖过一个 但是感觉不如这个说的细: https://www.jb51.net/article/31010.htm 关注脚本之家微信公众号(jb ...

  6. java web学习总结(二十九) -------------------JavaBean的两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

  7. 一步一步学FRDM-KE02Z(一):IAR调试平台搭建以及OpenSDA两种工作模式设置

    摘要:FRDM-KE02Z是飞思卡尔公司较为新的微控制器,学习和开发资料较少.从本篇开始会陆续介绍其相关的开发流程,并完成一个小型的工程项目.这是本系列博客的第一篇,主要介绍开发环境IAR for A ...

  8. ASP.Net的两种开发模式

    一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...

  9. Spark on YARN两种运行模式介绍

    本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发)   问题导读 1.Spark ...

  10. javaweb学习总结(二十一)——JavaWeb的两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

随机推荐

  1. 为什么OpenAPI是未来企业数字化转型的决定性因素?

    本文分享自华为云开发者联盟公众号<为什么OpenAPI是未来企业数字化转型的决定性因素?>. 随着数字经济不断发展升级,数据互通.万物互联正在逐步成为IT产业发展的主旋律,企业数字化转型也 ...

  2. 小熊派开发实践丨小熊派+合宙Cat.1接入云服务器

    摘要:使用小熊派开发板,以合宙的AIR724为通信模组(Cat.1),以AT指令方式,通过mqtt协议接入云服务器. 本贴使用小熊派开发板+合宙的Air724(Cat.1模组),接入自己搭建的EMQ服 ...

  3. 大数据集群跨多版本升级、业务0中断,只因背后有TA

    摘要:2021年4月21日,中国太平洋保险集团联合华为云完成了全球首例大数据集群跨多版本的大数据集群滚动升级. 本文分享自华为云社区<华为云FusionInsight助力太保跨多版本升级业务0中 ...

  4. vue2升级vue3: TSX Vue 3 Composition API Refs

    在vue2时代,$refs 直接操作子组件 this.$refs.gridlayout.$children[index]; 虽然不推荐这么做,但是确实非常好用.但是vue2快速迁移到vue3,之前的这 ...

  5. 登录appuploader

    ​ 转载:登录appuploader 常规使用登录方法 双击appuploader.exe 启动appuploader 点击底部的未登录,弹出登录框 在登录框内输入apple开发者账号 如果没有app ...

  6. Solon2 开发之IoC,三、注入或手动获取 Bean

    1.如何注入Bean? 先了解一下Bean生命周期的简化版: 运行构建函数 尝试字段注入(有时同步注入,没时订阅注入.不会有相互依赖而卡住的问题) @Init 函数(是在容器初始化完成后才执行) .. ...

  7. BBS项目(四):临时评论渲染 文章子评论功能 后台管理页面搭建 添加文章页面搭建

    目录 临时评论样式渲染 文章子评论业务逻辑 后台管理页面搭建 后台管理页面模板创建 添加文章页面搭建 富文本编辑器 添加文章初步实现 添加文章功能优化 beautifulsoup模块基本使用 临时评论 ...

  8. Java Socket Demo

    服务端: package com.sux.demo; import java.io.*; import java.net.ServerSocket; import java.net.Socket; i ...

  9. Codeforce 318A - Even Odds(数学水题)

    Being a nonconformist, Volodya is displeased with the current state of things, particularly with the ...

  10. MySQL 的 crash-safe 原理解析

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/5i9wmJs4_Er7RaYfNnETyA作者:xieweipeng MySQL作为当下最流行 ...