文章目录

  • 一、Awk 的两个特殊模式
    • 实例:
  • 二、Awk高级应用
    • 1. if单分支语句
    • 2. if双分支语句
    • 3. for循环
    • 4. while循环
  • SHELL—— awk两个特殊模式(BEGIN 和 END)及awk高级应用(条件判断、循环)

一、Awk 的两个特殊模式

  • BEGIN 和 END,BEGIN 被放置在没有读取任何数据之前
  • END 被放置在所有的数据读取完成以后执行
  • 体现如下:
  • BEGIN{}: 读入第一行文本之前执行的语句,一般用来初始化操作
    {}: 逐行处理
    END{}: 处理完最后以行文本后执行,一般用来处理输出结果

实例:

文件开头加XWPHSA,末尾加XWPHCA ,打印行号和内容

[root@server19 mnt]# awk -F: 'BEGIN {print "XWPHSA"} {print NR;print} END {print "XWPHCA"}'  /etc/passwd

统计文本总字段个数

[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
1
2

统计/etc/passwd下uid小于500的用户个数

[root@server19 mnt]# awk -F: 'BEGIN{i=0}{if($3<500){i++}}END{print i}' /etc/passwd
31
1
2

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
```java
[root@server19 mnt]# seq 5    ##seq命令可以直接生成
1
2
3
4
5
1
2
3
4
5
6
7
8
9
10
11
12
13

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

shell-awk的BEGIN和END相关推荐

  1. shell awk 的一些用法

    #1.打印挂载目录的使用量,默认以空格为分割 df -Ph | awk '{ print $5,$6 }' #2.以空格.冒号.\t.分号为分割 awk -F '[ :\t;]' '{print $1 ...

  2. Shell awk文本处理,shell脚本编写

    Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...

  3. linux shell awk 语法

    引用:http://blog.csdn.net/weekly123/article/details/1465675 inux shell awk 语法     Awk 是一种非常好的语言,同时有一个非 ...

  4. linux shell awk用法

    Awk 是一种非常好的语言,同时有一个非常奇怪的名称.在本系列(共三篇文章)的第一篇文章中,Daniel Robbins 将使您迅速掌握 awk 编程技巧.随着本系列的进展,将讨论更高级的主题,最后将 ...

  5. shell awk命令

    语法: awk '{command}' filename  多个命令以分号分隔. awk 'BEGIN {command1} {command2} END{command3}'  注意:BEGIN , ...

  6. linux awk拼接字符串,shell awk命令字符串拼接

    摘要 腾兴网为您分享:shell awk命令字符串拼接,智联招聘,心视界,同花顺,手机管家等软件知识,以及一师一优课一课一名师登录,去视频水印,防沉迷解除,兼职猫招聘网,c4d渲染插件,社会实践活动登 ...

  7. shell awk命令详解

    shell awk命令详解 awk原理 格式 实操 相关内建变量 简易需求 进阶操作 高阶操作 awk原理 逐行读取文本,默认时以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中, ...

  8. Linux 抓取网页实例(shell+awk)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 上一篇博 ...

  9. linux shell awk BEGIN END 处理文本之前之后执行操作 简介

    目录 简介 1 最简单的action 既没有pattern 有没有options 2 awk是逐行处理 2.1 输出整行 2.2 输出最后一列 2.3 输出倒数第二列 3 pattern 3.1 be ...

  10. shell awk sed tr grep 语法汇总

    原文地址:http://www.cnblogs.com/wajika/p/6374043.html tr 基本语法 -c          # 用字符串1中字符集的补集替换此字符集,要求字符集为ASC ...

最新文章

  1. WCF 基础之契约(Contract)[转]
  2. dubbo集群和负载均衡
  3. 【Python】find()函数居然还能指定搜索的起点和终点?
  4. Git之回退已经提交到远程仓库的代码(已经push的代码)
  5. 使用NSOperation为你的app加速
  6. STAR直接就可以输出readsCount,为什么还需要featurecounts?
  7. #9 case while until select语句的运用与例子
  8. iscsi多路径配置方式
  9. 围棋人机大战属于计算机在什么方面的应用,人民日报评围棋人机大战:胜出的是我们自己...
  10. CMYK与RGB颜色区别
  11. springboot基于微信小程序的在线考试系统
  12. Msql特定业务之自增业务表,适用于根据表去分类管理业务数据
  13. Add-Migration
  14. 邮件发送错了怎么办?TOM VIP邮箱如何撤回邮件
  15. Linux性能测试工具之Disk(四)
  16. Pytorch | 学习笔记(二)
  17. 【解析】心田上的百合花开——心田花开
  18. 如何批量将png格式改成jpg?
  19. Android 在Canvas中实现画笔效果(一)--钢笔
  20. 几种Linux备份方法

热门文章

  1. 磐云网络空间安全环境制作iso镜像转img格式导入。
  2. iview_admin兼容ie11,ie9
  3. 【CGroup原理篇V1】十四、NET_PRIO子系统
  4. 更新 freenode irc 邮箱
  5. 【读书】吴恩达:成功之前,先快速、廉价地失败
  6. 不懂进制转换,我连B站追番的权利都没有
  7. Quartz 定时任务时间设置
  8. 【计算机网络】浏览器中的 http 请求响应过程
  9. 【Arxiv 2022】Teaching Broad Reasoning Skills via Decomposition-Guided Contexts
  10. [原创]找工作(四格漫画)