【shell】shell脚本实战-awk使用案例
文章目录
- 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使用案例相关推荐
- 【shell】shell脚本实战-awk基本介绍
文章目录 前言 概念 awk常用的选项和命令 awk的选项 awk的环境变量 awk的运算符 awk的内置字符串函数 前言 我们之前学习过grep,sed,这两个工具的作用如下: grep和egrep ...
- 【shell】shell脚本实战-awk工作模式讲解
文章目录 awk工作的三个步骤 awk中的各种模式详解 1. awk 脚本拥有的形式 2. 正则表达式 3. 关系表达式 4. 组合的Pattern(模式) 5. Pattern1,Pattern2 ...
- 循序渐进学运维-shell脚本实战专栏
我是互联网老辛,关注我吧,给自己每天的进步找一个机会和理由,不要被无效信息淹没,免除知识焦虑 前言 shell脚本大家要做为重点来学习,shell写的好,可以不学Python,一样拿高薪: shell ...
- linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...
最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...
- shell脚本编程神器之awk语法案例详解
AWK入门指南 文章目录 shell脚本编程神器之awk语法案例详解 安装AWK AWK 起步示例 AWK程序的结构 执行 awk 程序 awk 的错误提示 简单输出 打印每一行 打印特定行 NF,字 ...
- linux 运维高级脚本生成器,Linux运维系列,Shell高级脚本自动化编程实战
课程文件目录: Linux自动化运维系列 Shell高级脚本自动化编程实战 [6.1G] ┣━━01.Shell基础概述 [315.1M] ┃ ┣━━1-1 Shell脚本体系概述.mp4 [154. ...
- Liunx下的日志清理shell脚本实战之日志备份
Liunx下的日志清理shell脚本实战 一.脚本实现功能以及要求 二.shell脚本内容 一.脚本实现功能以及要求 二.shell脚本内容 一.脚本实现功能以及要求 1.日志备份目录,将日志备份到/ ...
- shell 脚本实战 五
摘自 shell脚本实战 第二版 第四章 Unix调校 脚本27 显示带有行号的文件 在显示文件时添加行号有很多种方法,其中一些实现起来相当简洁.例如,下面是 awk 的 做法: awk '{prin ...
- shell 脚本实战 三
摘自 shell脚本实战 第二版 第二章 改进用户命令 脚本14 格式化过长的行 要是够幸运的话,你所用的 Unix 系统中已经包含了 fmt 命令,如果你日常从事文本工作, 那么这个命令非常有用.不 ...
最新文章
- 点云深度学习的Pytorch框架
- PhpCms V9调用指定栏目子栏目文章的方法
- 开学综合症有救了!17篇最新AI论文不容错过
- Linux学习之系统编程篇:条件变量(pthread_cond_init / wait / signal / broadcast / destroy)
- zuul在zuulFilter获取返回值后,接口获取不到数据
- 设置图片圆角 或者圆形
- 数据堂智能语音数据库,让客服更智能
- cmake之交叉编译arm32/arm64(四)
- 步步为营VS 2008 + .NET 3.5(2) - VS 2008新特性之JavaScript Intellisense and Debugging
- 黑客编程入门 之 网络编程入门
- 计算机辅助档案管理文字说明,计算机辅助档案管理
- 数据分析SQL【离职率】和【司龄】的计算
- 单片机学习知识点全攻略
- AD域批量的导入账号
- 教大家如何利用电脑发射wifi信号 供其他设备免费高速上网!
- 国内外机器学习、深度学习竞赛平台
- Eclipse is not responding
- 20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放
- 计算机excel2010运算符,Excel 2010 中运算符应用举例
- 主数据管理平台如何进行模型管理