awk的用法

目录

awk简述

awk的用法

选项

内置变量

命令格式

打印行号

打印指定行

打印奇偶行

按行取列

BEGIN打印模式

乘法计算

awk -v 变量赋值

awk的条件判断

面试题awk的三元表达式

awk的精确筛选

逻辑且、或关系

awk做小数运算

curl

练习

1.获取其中的所有子域名

2.使用awk获取 /etc目录下所有文件的总大小

3.监控内存,cpu和硬盘的根目录,超过80%提示用户,写成函数库的行,每天早上 的8:50分,执行一次脚本。监控各个负载的功能使用函数库的形式实现


awk简述

查 用grep

增和改 用sed

按行取列 用awk

awk默认的分隔符就是空格,也可以是tab健,如果有多个空格自动压缩成一个

awk的工作原理是根据指令信息,逐行的读取文本内容,然后按照条件进行格式化输出

awk的用法

选项

awk -F 指定分隔符,默认就是空格

awk -v  变量赋值

内置变量

awk -F '{print $1}' test.txt  

$#:按行需要取出的第几个字段

$0:打印所有,展示所有的文本内容(默认)

NR:需要处理的行号

NF:处理行的字段个数,$NF:当前行的最后一个字段

FS:FS和F是一样的,都是指定分隔符   -FS=“:” 或者-F:

OFS:指定输出内容的分隔符

RS:行分隔符,可以根据RS的设置把文件内容切割成多个记录,也可以改变行的分隔符,默认是\n,回车,换行

命令格式:awk -F '操作符 {动作}'  处理对象

-F 指定分隔符,如果是空格可以不加

动作:默认就是打印

awk 'print' test.txt 打印所有内容 默认所有就是$0

命令格式

awk -F '操作符 {动作 处理对象}'

打印行号

awk '{print NR}' test.txt 告诉我们有几行

awk '{print NR,$0}'  test.txt 既打印行号又打印内容

打印指定行

awk 'NR==3{print}' test.txt 打印第三行

awk 'NR==3,NR==5{print}' test.txt 打印第三行到第五行

awk 'NR==3;NR==5{print}' test.txt 打印第三行和第五行

打印奇偶行

awk 'NR%2==0{print}' test.txt  打印偶数行

awk 'NR%2==1{print}' test.txt  打印奇数行

按行取列

awk  -F:  '{print $3}'  test.txt 打印第三列

awk -F:  'NR==1,NR==3{print $3}' /etc/passwd 打印第一行到第三行的第三列

awk怎么使用文本过滤

awk '/root/{pint}' /etc/passwd  打印所有包含root的行

BEGIN打印模式

格式:awk  'BEGIN{...};{....};END{....}'  文件

awk 'BEGIN{预先条件};{处理条件};END{结束条件}'

BEGIN{...} 表示预先的条件,就是执行awk命令前的初始化操作

{....} 处理条件,就是如何对初始值进行操作

END{.....} 处理完之后的操作,一般都是打印

awk  'BEGIN{x=1};{x++};END{print x}'  test.txt  结果表示多少行 

乘法计算

awk 'BEGIN{print  10*2}' 

awk 'BEGIN{print 2**3}'  就是2的3次方或者awk 'BEGIN{print 2^3}'

awk -v 变量赋值

指定分隔符换一个分隔符打印

RS以冒号为分隔符 默认是回车 打印

awk的条件判断

awk -F: '$3>900{print $0}' /etc/passwd  大于900的值打印出来

awk -F: '!($3>900){print $0}' /etc/passwd  取反,小于900的值

awk -F: '$3==999{print $0}' /etc/passwd  等于900的值

面试题awk的三元表达式

就是if  else 语句

格式 :awk -F: '{num=($3>4)?$3:$4;{print  num,o}}'  /etc/passwd

awk -F: '{num=($3>$4)?$3:$4;{print num;$0}}' /etc/passwd

?就是if

:就是else

;就是fi 

awk的精确筛选

$n( > < ==)用于比较数值

$n~"字符串"  表示该字段包含某个字符串

$n!~"字符串" 表示该字段不包含某个字符串

$n=="字符串" 表示该字段等于这个字符串(精确需要全部写完整)

$n!=="字符串" 表示该字段不等于这个字符串(精确需要全部写完整)

$NF   表示当前行的最后一个字段

$n(> < ==)用于比较数值
$n~"字符串" :该字段包含这个字符串
$n!~"字符串" :该字段不包含这个字符串
$n=="字符串" :该字段等于这个字符串
$n!="字符串" :该字段不等于这个字符串
$NF :最后一个字段

awk -F: '$7~"bash" {print $1,$NF}'  /etc/passwd  打印第七列包含bash这个字段的行,取的是行的第一列和最后一列,以:作为分隔符

打印/etc/passwd第七列包含bash这个字段的行,取行的第一列和最后一列

awk -F: '$7~"bash" {print $1,$NF}' /etc/passwd

打印/etc/passwd第七列字段为/bin/bash的行,取行的第一列和最后一列

awk -F: '$7=="/bin/bash" {print $1,$NF}' /etc/passwd

去除/var/log/messages 文件前5行 第5列的内容

head -5 /var/log/messages | awk '{$5=""}1'

逻辑且、或关系

且 awk -F: '($1=="test2")&&($NF=="/bin/bash") {print $1,$NF}' /etc/passwd

打印/etc/passwd第一列为root第七列(最后一列)为/bin/bash的行

awk -F: '($1=="root")&&($NF=="/bin/bash") {print $0}' /etc/passwd
# && 两边的条件的()可以不加,但加了更方便阅读

打印/etc/passwd第一列为dhcp第七列为/bin/bash的行

awk -F: '($1=="dhcp")||($NF=="/bin/bash") {print $0}' /etc/passwd

awk做小数运算

awk做小数运算,有几位小数就算几位小数,也可以指定输出结果的小数位数

awk 'BEGIN{printf "%.#f" , 小数运算}'
# {}里的%.#f号表示数字,数字是几就表述输出结果有几位小数,四舍五入
awk 'BEGIN{printf "%.F" , 小数运算}'
# %.F 表示输出结果为整数,四舍五入

curl

curl  主要的功能是获取和发送数据

curl www.baidu.com

curl 192.168.233.10

获取网页内容并且输出

curl -0 下载文件到本地

curl -o  将文件下载到指定的路径

curl  -x 发送post请求

curl -i 可以或缺web软件的版本(服务端没有影藏版本号)

取小数点几位以及小数运算怎么取整数

num=$(awk 'BEGIN{printf  "%.2f",  1.222+3.666}')  保留小数后2位

num=$(awk 'BEGIN{printf  "%.F",  6.345+5.789 }')  取整数

练习

1.获取其中的所有子域名

2.使用awk获取 /etc目录下所有文件的总大小

ll /etc | awk '/^-/{print sum+=$5} END{print "文件的总大小:"sum/1024"M" }'

3.监控内存,cpu和硬盘的根目录,超过80%提示用户,写成函数库的行,每天早上 的8:50分,执行一次脚本。监控各个负载的功能使用函数库的形式实现

函数库文件:testlib.sh

# 检测CPU负载
cputest () {
local c=$(top -b -n 1 | awk 'NR==3 {printf "%.F", $2+$4}')
if [[ c -ge 80 ]];then
  echo "当前CPU负载${c}%,超过80%!请及时处理!"
else
  echo "CPU负载正常,当前负载${c}%"
fi
}

# 检测内存负载
memtest () {
local b=$(free -m | awk 'NR==2 {printf "%.F", $3/$2*100 }')
if [[ $b -ge 80 ]];then
  echo "当前内存负载${b}%,超过80%!请及时处理!"
else
  echo "内存负载正常,当前负载${b}%"
fi
}

# 检测根目录负载
blktest () {
local a=$(df -h | awk '$NF=="/" {print $5}' | tr -d "%")
if [[ $a -ge 80 ]];then
  echo "根目录当前使用达到${a}%,超过80%!请及时处理!"
else
  echo "根目录使用空间正常,当前已使用${a}%"
fi
}

每天执行的脚本文件jiankong.sh

. /opt/zuoye1/testlib.sh
cputest
memtest
blktest

创建定时任务

crontab -e
50 8 * * * /opt/zuoye1/jiankong.sh

查看定时任务

crontab -l
50 8 * * * /opt/zuoye1/jiankong.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/756238.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebSocket 连接失败的原因及解决方法

WebSocket 目前已经成为了一项极为重要的技术&#xff0c;其允许客户端和服务器之间进行实时、全双工的通信。然而&#xff0c;在实际项目中&#xff0c;开发者时常会遇到 WebSocket 连接失败的情况。这不仅影响了用户体验&#xff0c;还可能导致不可预见的系统错误或数据丢失。…

字节码编程ASM之插桩调用其他类的静态方法

写在前面 源码 。 本文看下通过ASM如何实现插桩调用其他类的静态方法。 1&#xff1a;编码 假定有如下的类&#xff1a; public class PayController {public void pay(int userId, int payAmount) {System.out.println("用户&#xff1a;" userId ", 调用…

mybatis框架介绍 , 环境的搭建和代码实现

1.mybatis框架介绍 mybatis框架介绍 mybatis是Apache软件基金会下的一个开源项目&#xff0c;前身是iBatis框架。2010年这个项目由apache 软件基金会迁移到google code下&#xff0c;改名为mybatis。2013年11月又迁移到了github(GitHub 是一个面向开源及私有 软件项目的托管平…

kafka--发布-订阅消息系统

1. Kafka概述 1. kafka是什么 kafka是分布式的、高并发的、基于发布/订阅模式的消息队列软件系统。 kafka中的重要组件 Producer&#xff1a;消息生产者&#xff0c;发布消息到Kafka集群的终端或服务Consume&#xff1a;消费者&#xff0c;从Kafka集群中消费消息的终端或服…

GPT-5

欢迎来到 Papicatch的博客 文章目录 &#x1f349;技术突破预测 &#x1f348;算法进步 &#x1f348;理解力提升 &#x1f348;行业推动力 &#x1f349;人机协作的未来 &#x1f348;辅助决策 &#x1f348;增强创造力 &#x1f348;复杂任务中的角色 &#x1f348;人…

构建以caffeine为L1,Redis为L2的多级缓存

&#x1f3c3;‍♂️ 微信公众号: 朕在debugger© 版权: 本文由【朕在debugger】原创、需要转载请联系博主&#x1f4d5; 如果文章对您有所帮助&#xff0c;欢迎关注、点赞、转发和订阅专栏&#xff01; 前言 S&#xff08;Situation&#xff09;&#xff1a;业务代码与缓存…

RK3588 Android13 TvSetting 中增加 WebView 切换菜单

前言 电视产品,客户要求在设置中设备偏好设置子菜单下增加一个 WebView切换菜单,一开始不知道怎么下手,后来想起来在设置开发者选项里有一个类似的菜单, 去把实现逻辑搞出来应该就ok。 效果图 TvSetting 部分修改文件清单 packages/apps/TvSettings/Settings/res/values…

改机软件有哪些?实现一键新机、改串号、改IMEI和手机参数的需求 硬改手机软件,新机环境模拟 设备伪装,一键改机,一键复原

这次针对可以直接开端口修改参数的机型做一些工具解析 前面接触合作过很多工作室。其中很多工作室对于各自软件的跳验证有各自的需求。 一个机型各项参数一般有IMEI WiFi 蓝牙 sn psb ESN等等。 针对这些参数的修改首先要明白各自软件检测的具体是哪些参数来验证。 对于常用…

在Ubuntu上配置PPPoE服务:从安装到自动化启动的全指南

在Ubuntu上配置PPPoE服务&#xff1a;从安装到自动化启动的全指南 PPPoE&#xff08;点对点协议以太网&#xff09;是一种广泛用于DSL和光纤宽带连接的协议。在本篇技术博客中&#xff0c;我们将详细介绍如何在Ubuntu系统上配置PPPoE服务&#xff0c;包括安装、配置、启动以及…

STM32——使用TIM输出比较产生PWM波形控制舵机转角

一、输出比较简介&#xff1a; 只有高级定时器和通用寄存器才有输入捕获/输出比较电路&#xff0c;他们有四个CCR&#xff08;捕获/比较寄存器&#xff09;&#xff0c;共用一个CNT&#xff08;计数器&#xff09;&#xff0c;而输出比较功能是用来输出PWM波形的。 红圈部分…

深入探索大模型的魅力:前沿技术、挑战与未来展望

目录 一、大模型的前沿技术 二、大模型面临的挑战 三、大模型的未来展望 四、总结 在当今人工智能领域&#xff0c;大模型不仅是一个热门话题&#xff0c;更是推动技术进步的重要引擎。从深度学习的浪潮中崛起&#xff0c;大模型以其卓越的性能和广泛的应用前景&#xff0c…

中医对于帕金森病的病因和症状有何解释?

中医对帕金森病的病因解释 中医认为帕金森病的病因复杂多样&#xff0c;涉及多个方面。首先&#xff0c;精神因素如长期的情绪抑郁、悲伤、忧虑等精神不畅可能导致气机郁结&#xff0c;气血运行障碍&#xff0c;进而影响脑部神经系统的功能。其次&#xff0c;肝郁气滞也被认为…

2025艺考时间线来啦!所有艺考生码住!

2025届艺考生们的征途即将启程。对于每一个即将参加艺考的考生和家长来说&#xff0c;梳理艺考时间节点是尤为重要的。 对于艺考生而言&#xff0c;更早的规划意味着更充分的准备时间&#xff0c;更扎实的专业能力。补齐艺考信息差&#xff0c;以下2025艺考时间线一定要看明白…

CC7关于ConstantTransformer返回值不能和put一样的分析

CC7关于ConstantTransformer返回值不能和put一样的分析 前言 实验室的gaorenyusi也是学到cc7的时候问了我一个很好的问题&#xff0c;我当时学的时候没有在意&#xff0c;然后就去调试分析解决了一下 分析 首先是paylaod package CC7;import org.apache.commons.collectio…

Mysql基本知识点

1.数据库的基本操作 显示当前的数据库 show databases;创建一个数据库 直接创建数据库 create database 数据库名字;如果系统没有 test2 的数据库&#xff0c;则创建一个名叫 test2 的数据库&#xff0c;如果有则不创建 create database if not exists test2;如果系统没有 db…

Mathematica训练课(44)-- 一些符号#,,//, /. 的整理

①“//”在后面写成你要执行的操作,即可执行。 注意:这一函数作用域标志的优先级是很靠后的,也就是说它会对一整行式子作用。 ②@的作用是在@后面的第一个元素进行操作 Sqrt @ a(*@作用在@后面、对离@最近的仅仅一个元素作用*) 例如,下面 若作用对象外面套着{},那么就要…

学校消防设施设备管理系统

建立和落实校园消防安全管理责任制,做到消防安全工作有人专管,部门和岗位有人落实的日常管理&#xff0c;及时发现消防安全隐患,及时反映,及时处理,杜绝校园内消防安全隐患。 凡尔码平台搭建学校消防设施设备管理系统可以通过设备管理系统对消防器材设施基本信息、设施有效期、…

Unity2D - 状态机(State Machine)详解

1. 状态机概述 在角色的生成中&#xff0c;由于事件的不同&#xff0c;动作的不同&#xff0c;角色会处于不同的状态中。例如对战冒险游戏&#xff0c;面临Boss的攻击&#xff0c;角色会受到例如中毒&#xff0c;恐惧等Debuff效果&#xff0c;若单纯的在一个脚本中使用if等语句…

中霖教育靠谱吗?在职备考一建好通过吗?

中霖教育靠谱吗?在职备考一建好通过吗? 课程设置&#xff1a;报名后会进行测评&#xff0c;了解学员的知识掌握情况、时间安排和记忆思维特点等&#xff0c;制定更适合的学习计划。 课程以考试通过为目标&#xff0c;去繁化简&#xff0c;只讲有用的干货&#xff0c;帮助快…

ASUS/华硕幻14 2023 GA402X系列 原厂Windows11-22H2系统

安装后恢复到您开箱的体验界面&#xff0c;带原机所有驱动和软件&#xff0c;包括myasus mcafee office 奥创等。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http:…