文章目录

  • 一、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. 读书笔记-沙漠里的细水微光
  2. 白话Elasticsearch35-深入聚合数据分析之案例实战更多metrics用法:统计每种颜色电视最大最小价格
  3. TCP三次握手的原理及***手段
  4. Ross《随机过程》(第二版)装填问题Python模拟实验
  5. python学习-综合练习(平方根、海伦公式、随机数、转换函数、数值交换)
  6. 【转】XP/2000无法使用“缩略图查看”、右键无“设置桌面背景”选项问题详解...
  7. 1.12.05 统计单词数
  8. 4.线性和卷积——边界问题、解决边界方法和Matlab实战_3
  9. 力扣268.丢失的数字
  10. Machine Learning系列实验--SoftMax Regression
  11. tp摄像头的默认地址_TPLINK默认IP地址是什么?
  12. redis为什么这么快
  13. 广东英语高考怎么计算机,2019广东高考英语听说考试大纲出炉!附三大题型得分套路!...
  14. 次坐标从0开始_定位基础-坐标变换
  15. 【MySQL】数据库的高级查询
  16. 揭密Oracle之七种武器之三:破译古老的谜题---共享CBC Latch的秘密
  17. opencv android安装教程,opencv for android安装教程.doc
  18. 微信公众号运营策划方案书之公众号基础知识
  19. 如何使用BM25算法检索出最相关的序列
  20. 前置机应用服务器,web服务器前置机(erp)部署步骤.pdf

热门文章

  1. 2020年第十届C/C++ B组第一场蓝桥杯省赛真题第一题:跑步训练(5分
  2. JS获取当前节点的兄弟/父/子节点
  3. html 里img图片被自动旋转,关于HTML5显示图片翻转90度的问题
  4. UE 添加模块的全局宏
  5. 五子棋透明棋盘界面设计(C语言)
  6. FlyAI资讯:Uber正式开源分布式机器学习平台:Fiber
  7. 用Modelsim SE 直接仿真 Altera(Intel PSG) IP核 需要注意的问题
  8. spring @Transactional事务未提交导致的并发问题
  9. JArray转DataSet
  10. Spring boot+Vue前后端分离项目实战——学生管理系统【三】后端