awk的用法

news2024/11/26 3:36:19

目录

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB-振动问题:单自由度阻尼振动系统受迫振动

一、基本理论 二、MATLAB实现 单自由度阻尼振动系统受迫振动&#xff0c;MATLAB代码如下&#xff1a; clear; clc; close allA 1; psi 0; F0 10; D 20; Rm 0.5; M 1; omega 2; delta Rm / (2*M); omega0 sqrt(D / M); Omega sqrt(omega0^2 - delta^2); Zm Rm i *…

Python学习笔记25:进阶篇(十四)常见标准库使用之性能测试timeit模块学习使用

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 性能测量…

视频共享融合赋能平台LntonCVS安防监控平台现场方案实现和应用场景

LntonCVS国标视频融合云平台采用端-边-云一体化架构&#xff0c;部署简单灵活&#xff0c;功能多样化。支持多协议&#xff08;GB28181/RTSP/Onvif/海康SDK/Ehome/大华SDK/RTMP推流等&#xff09;和多类型设备接入&#xff08;IPC/NVR/监控平台&#xff09;。主要功能包括视频直…

数据中心机柜如何正确选择

选择适合数据中心的机柜是一个综合考量多个因素的过程&#xff0c;以下是一些关键点&#xff0c;帮助您做出正确的选择&#xff1a; 结构与承重&#xff1a; 考虑机柜的类型&#xff08;开放式或封闭式&#xff09;、重量载荷能力&#xff0c;确保它能承受数据中心内设备的总重…

期末C语言易错知识点整理

1.在定义多维数组时&#xff0c;除了最左边的维度&#xff0c;其余的维度必须明确指定大小 2.int m[1][4]{4}; 定义的是一个 1 行 4 列的二维数组&#xff0c;初始化时提供了一个元素 4&#xff0c;其余元素默认初始化为 0&#xff0c;因此是正确的。 3.二维数组 a[3][6] 中的索…

flash-Attention2安装和使用

flash-Attention2安装和使用 文章目录 flash-Attention2安装和使用写在前面解决方案 写在前面 就怕你不知道怎么查 pytorch、cuda 的版本 配置cuda&#xff1a;vim ~/.bashrc export CUDA_HOME/usr/local/cuda/ export PATH$PATH:$CUDA_HOME/bin export LD_LIBRARY_PATH$LD_LIB…

分页插件 count有数据,代码不往下执行

如下:如果打印了sql那么当row>0时会有图2下面sql详情的输出 问题出在了分页参数上,pageNum为1,并且pageSize>2才能打印出图二的结果,图一为pageNum值是0,注意,查询第一页,分页应该传入的是1而不是0

松下的台灯值得入手吗?书客、飞利浦真实横评大分享!

我们都知道&#xff0c;无论是学习还是工作&#xff0c;都需要一个良好的照明环境&#xff0c;而台灯就是我们日常生活中非常重要的照明工具。它不仅能够提供额外的光线&#xff0c;还能减少眼睛疲劳&#xff0c;提高我们的工作和学习效率。 所以&#xff0c;选购一款合适的台…

根据后端返回的省市区重新封装树结构(省市区通过children表示)

对比图&#xff08;截取部分&#xff09;&#xff1a; 注&#xff1a;先看分步&#xff0c;最后会附上完整代码&#xff08;如果有用&#xff0c;可以给小编点个赞吗&#xff1f;十分感谢&#xff09; 1.首先将前端返回相同的省份只展示一次 const obj {}; let keyList []r…

安防监控视频平台LntonAIServer视频监控管理平台裸土检测算法技术核心和应用场景

LntonAIServer裸土检测算法是一种基于人工智能技术的创新解决方案&#xff0c;旨在实现对裸土地表的自动识别。以下是对该算法的详细分析&#xff1a; 技术基础&#xff1a; 1、该算法利用深度学习和计算机视觉技术&#xff0c;通过捕捉视频或图像中的关键信息&#xff0c;如…

SDIO学习(2)--SD卡 2.0协议

目录 1 SD卡简介 1.1 SD卡概念 1.2 SD卡外形和接口 1.3 SD卡特点 2 SD 2.0特点 3 SD 2.0总线拓扑结构 3.1 SD模式 3.2 SPI模式 4 SD 2.0总线协议 5 SD卡寄存器 5.1 OCR寄存器 5.2 CID 寄存器 5.3 CSD 寄存器 5.3.1 CSD结构 5.3.2 CSD寄存器 (CSD Version 2.0)…

软件测试之接口测试(Postman/Jmeter)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是接口测试 通常做的接口测试指的是系统对外的接口&#xff0c;比如你需要从别的系统来…

从零开始备考CCIE安全,这么做就对了

CCIE Security认证是思科提供的最高级别的安全认证&#xff0c;验证在设计、实施和故障排除复杂的安全网络基础设施方面的能力。 获得CCIE Security认证不仅是对你网络安全专业知识的高度认可&#xff0c;更是职业发展的重要转折。 它能够显著提升你的职业竞争力&#xff0c;为…

制造企业的仓库管理如何做好数据分析?

在竞争激烈的现代制造业环境中&#xff0c;仓库管理成为许多生产制造企业面临的一大挑战。随着产品种类的不断增加和客户需求的日一个型号&#xff0c;仓库不仅要处理物料、半成品和成品&#xff0c;还要应对产品更新换代、不同项目客户的特殊需求等复杂因素。面对这些挑战&…

分布式kettle调度管理平台简介

介绍 Kettle&#xff08;也称为Pentaho Data Integration&#xff09;是一款开源的ETL&#xff08;Extract, Transform, Load&#xff09;工具&#xff0c;由Pentaho&#xff08;现为Hitachi Vantara&#xff09;开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…

什么是产线工控安全,如何保障产线设备的安全

什么是产线工控安全&#xff1f; 工控&#xff0c;指的是工业自动化控制&#xff0c;主要利用电子电气、机械、软件组合实现。即是工业控制系统&#xff0c;或者是工厂自动化控制。产线工控安全指的是工业控制系统的数据、网络和系统安全。随着工业信息化的迅猛发展&#xff0…

首户完工!江门市特殊困难老年人家庭适老化改造资助项目初见成效

日前&#xff0c;江门市特殊困难老年人家庭适老化改造项目取得新进展。位于蓬江区杜阮镇的黄伯家&#xff0c;成为“慈善筑迹溢彩同行”江门市特殊困难老年人家庭适老化改造项目资助的首户完工受益户。 黄伯的家由两座旧平房构成&#xff0c;大门门槛处原步差较大&#xff0c;…

spring aop 初探

org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#wrapIfNecessary 分析JDK动态代理 生成的代理对象 构造函数&#xff0c;入参为 InvocationHandler public com.sun.proxy.$Proxy164(java.lang.reflect.InvocationHandler) 生成动态代理Class对象&…

免交互和嵌入执行模式

目录 概念 语法格式 统计行数 赋值变量 修改密码​编辑往文件里添加内容 ​编辑​编辑引入变量 整体赋值​编辑 加引号不赋值变量 expect实现免交互 免交互设置密码 免交互切换用户 嵌入执行模式 添加用户并免交互设置密码 免交互登录 传参实现ssh 练习 概念 …

day22--77. 组合+216.组合总和III+17.电话号码的字母组合

一、77. 组合 题目链接&#xff1a;https://leetcode.cn/problems/combinations/ 文章讲解&#xff1a;https://programmercarl.com/0077.%E7%BB%84%E5%90%88.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1ti4y1L7cv 1.1 初见思路 组合问题用回溯学会使用剪…