文章目录

  • 1. 使用NR行号来定位提取IP
  • 2. 去除首行
  • 3. 其他使用
    • 1. 打印特定字段
    • 2. NF, 字段数量
    • 3. 计算和打印
    • 4. 打印行号
    • 5. 在输出中添加内容
    • 6. 自定义格式输出
  • 4. 检查服务器是否受到DDOS攻击的脚本
  • 总结

1. 使用NR行号来定位提取IP

[root@ecs-c13b awk]# ifconfig eth0 |awk -F " " 'NR==2{print $2}'
192.168.0.192

2. 去除首行

[root@ecs-c13b awk]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
169.254.169.254 192.168.0.1     255.255.255.255 UGH   100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

方法一:

[root@ecs-c13b awk]# route -n |grep -v ^Kernel
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
169.254.169.254 192.168.0.1     255.255.255.255 UGH   100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@ecs-c13b awk]#

方法二:

[root@ecs-c13b awk]# route -n |sed 1d
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
169.254.169.254 192.168.0.1     255.255.255.255 UGH   100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@ecs-c13b awk]#

方法三:

[root@ecs-c13b awk]# route -n |awk 'NR!=1 {print $0}'
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
169.254.169.254 192.168.0.1     255.255.255.255 UGH   100    0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@ecs-c13b awk]#

3. 其他使用

创建练习文件:

[root@ mysql-master ~]# vim data.txt
Beth    4.00    0
Dan     3.75    0
kathy   4.00    10
Mark    5.00    20
Mary    5.50    22
Susie   4.25    18
1. 打印特定字段
[root@ mysql-master ~]#  awk '{print $1,$3}' data.txt
Beth 0
Dan 0
kathy 10
Mark 20
Mary 22
Susie 18

在 print 语句中被逗号分割的表达式, 在默认情况下他们将会用一个空格分割 来输出. 每一行 print 生成的内容都会以一个换行符作为结束. 但这些默认行 为都可以自定义。

2. NF, 字段数量

依次打印出每一行的字段数量, 第一个字段的值, 最后一个字段的值:

[root@ mysql-master ~]# awk '{print NF, $1, $NF}' data.txt
3 Beth 0
3 Dan 0
3 kathy 10
3 Mark 20
3 Mary 22
3 Susie 18
3. 计算和打印
[root@ mysql-master ~]# awk '{print $1, $2 * $3}' data.txt
Beth 0
Dan 0
kathy 40
Mark 100
Mary 121
Susie 76.5
4. 打印行号

Awk提供了另一个内建变量, 叫做 NR, 它会存储当前已经读取了多少行的计数. 我们可以使用 NR 和 $0 给 emp.data 的每一行加上行号:

[root@ mysql-master ~]# awk '{print NR,$0}' data.txt
1 Beth  4.00    0
2 Dan   3.75    0
3 kathy 4.00    10
4 Mark  5.00    20
5 Mary  5.50    22
6 Susie 4.25    18
5. 在输出中添加内容

当然也可以在字段中间或者计算的值中间打印输出想要的内容:

[root@ mysql-master ~]# awk '{print "total pay for", $1, "is", $2 * $3}' data.txt
total pay for Beth is 0
total pay for Dan is 0
total pay for kathy is 40
total pay for Mark is 100
total pay for Mary is 121
total pay for Susie is 76.5
6. 自定义格式输出

第1列使用15个字符宽度左对齐输出,最后一列使用15个字符宽度右对齐输出

[root@ecs-c13b awk]# awk -F: '{printf "USERNAME:%-15s %15s\n",$1,$NF}' /etc/passwd
USERNAME:root                  /bin/bash
USERNAME:bin               /sbin/nologin
USERNAME:daemon            /sbin/nologin

4. 检查服务器是否受到DDOS攻击的脚本

[root@ecs-c13b awk]# netstat -ntu |awk '{print$5}'|cut -d: -f1 |uniq -c |sort -n1 100.125.1.411 114.181.58.1971 120.245.114.1281 45.79.47.1981 Address1 servers)

总结

awk的内容还远远未完,还需要大量的练习。sed,grep,awk,用之前都需要花一些精力把语法搞明白。

后面我会做个思维导图来梳理下这三个内容,帮助大家记忆。

【shell】shell脚本实战-awk使用案例相关推荐

  1. 【shell】shell脚本实战-awk基本介绍

    文章目录 前言 概念 awk常用的选项和命令 awk的选项 awk的环境变量 awk的运算符 awk的内置字符串函数 前言 我们之前学习过grep,sed,这两个工具的作用如下: grep和egrep ...

  2. 【shell】shell脚本实战-awk工作模式讲解

    文章目录 awk工作的三个步骤 awk中的各种模式详解 1. awk 脚本拥有的形式 2. 正则表达式 3. 关系表达式 4. 组合的Pattern(模式) 5. Pattern1,Pattern2 ...

  3. 循序渐进学运维-shell脚本实战专栏

    我是互联网老辛,关注我吧,给自己每天的进步找一个机会和理由,不要被无效信息淹没,免除知识焦虑 前言 shell脚本大家要做为重点来学习,shell写的好,可以不学Python,一样拿高薪: shell ...

  4. linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...

    最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...

  5. shell脚本编程神器之awk语法案例详解

    AWK入门指南 文章目录 shell脚本编程神器之awk语法案例详解 安装AWK AWK 起步示例 AWK程序的结构 执行 awk 程序 awk 的错误提示 简单输出 打印每一行 打印特定行 NF,字 ...

  6. linux 运维高级脚本生成器,Linux运维系列,Shell高级脚本自动化编程实战

    课程文件目录: Linux自动化运维系列 Shell高级脚本自动化编程实战 [6.1G] ┣━━01.Shell基础概述 [315.1M] ┃ ┣━━1-1 Shell脚本体系概述.mp4 [154. ...

  7. Liunx下的日志清理shell脚本实战之日志备份

    Liunx下的日志清理shell脚本实战 一.脚本实现功能以及要求 二.shell脚本内容 一.脚本实现功能以及要求 二.shell脚本内容 一.脚本实现功能以及要求 1.日志备份目录,将日志备份到/ ...

  8. shell 脚本实战 五

    摘自 shell脚本实战 第二版 第四章 Unix调校 脚本27 显示带有行号的文件 在显示文件时添加行号有很多种方法,其中一些实现起来相当简洁.例如,下面是 awk 的 做法: awk '{prin ...

  9. shell 脚本实战 三

    摘自 shell脚本实战 第二版 第二章 改进用户命令 脚本14 格式化过长的行 要是够幸运的话,你所用的 Unix 系统中已经包含了 fmt 命令,如果你日常从事文本工作, 那么这个命令非常有用.不 ...

最新文章

  1. 点云深度学习的Pytorch框架
  2. PhpCms V9调用指定栏目子栏目文章的方法
  3. 开学综合症有救了!17篇最新AI论文不容错过
  4. Linux学习之系统编程篇:条件变量(pthread_cond_init / wait / signal / broadcast / destroy)
  5. zuul在zuulFilter获取返回值后,接口获取不到数据
  6. 设置图片圆角 或者圆形
  7. 数据堂智能语音数据库,让客服更智能
  8. cmake之交叉编译arm32/arm64(四)
  9. 步步为营VS 2008 + .NET 3.5(2) - VS 2008新特性之JavaScript Intellisense and Debugging
  10. 黑客编程入门 之 网络编程入门
  11. 计算机辅助档案管理文字说明,计算机辅助档案管理
  12. 数据分析SQL【离职率】和【司龄】的计算
  13. 单片机学习知识点全攻略
  14. AD域批量的导入账号
  15. 教大家如何利用电脑发射wifi信号 供其他设备免费高速上网!
  16. 国内外机器学习、深度学习竞赛平台
  17. Eclipse is not responding
  18. 20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放
  19. 计算机excel2010运算符,Excel 2010 中运算符应用举例
  20. 主数据管理平台如何进行模型管理

热门文章

  1. SQL Server 配置管理器无法打开
  2. python缺少标准库_如何将python标准库缺失的进行导入?
  3. linux重装eclipse_如何在Linux系统上安装Eclipse
  4. IT30: ERP与MES的生活案例!
  5. 华硕主板无盘启动bios设置_华硕影驰 bios设置,手把手教你华硕主板bios如何设置U盘启动...
  6. 抖音开发平台发私信给用户
  7. windows xp 服务详解
  8. 将在2020年颠覆企业业务的8项技术
  9. 元宇宙工业领域落地方法探讨
  10. Redis常见面试题你都掌握了没