当前位置: 首页 > news >正文

awk

awk

grep 查

sed 增删改查

awk 按行取列

awk默认分割符:

空格;tab键。多个空格压缩成一个空格

[root@test2 opt]# cat awk.txt 
1 2   3
[root@test2 opt]# awk '{print $3}' awk.txt 
3

awk的工作原理:

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

awk选项:

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

-v 变量赋值

内置变量

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

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

NR:需要处理的行号

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

FS:FS和F是一样的,都是指定分隔符,-F:FS='.'

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

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

awk命令格式

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

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

动作:默认就是打印。

打印行号和内容    NR是行号   $0所有内容
[root@test2 opt]# awk '{print NR,$0}' awk.txt 
1 one two  three
2 four five six
3 seven  eight  nine
打印指定行
[root@test2 opt]# awk 'NR==3{print}' awk.txt 
seven  eight  nine

指定打印几行到几行 逗号隔开

[root@test2 opt]# awk 'NR==1,NR==3{print}' awk.txt 
one two  three
four five six
seven  eight  nine

指定打印几行和几行 分号隔开

[root@test2 opt]# awk 'NR==1;NR==3{print}' awk.txt 
one two  three
seven  eight  nine
打印奇偶行

偶数行

[root@test2 opt]# awk 'NR%2==0{print}' awk.txt 
four five six

奇数行

[root@test2 opt]# awk 'NR%2==1{print}' awk.txt 
one two  three
seven  eight  nine
如何使用指定分隔符

打印几行到几行 的第几列

[root@test2 opt]# awk -F: 'NR==1{print $3};NR==3{print $3}' /etc/passwd
0
1
2
使用awk文本过滤
[root@test2 opt]# awk '/root/{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

以什么结尾过滤文本

[root@test2 opt]# awk '/bash$/{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
wbl:x:1000:1000:wbl:/home/wbl:/bin/bash
wbl1:x:1001:1001::/home/wbl1:/bin/bash
wbl2:x:1002:1002::/home/wbl2:/bin/bash
aaa:x:1003:1003::/home/aaa:/bin/bash
bbb:x:1004:1004::/home/bbb:/bin/bash
ccc:x:1005:1005::/home/ccc:/bin/bash

BEGIN打印模式

格式

awk ‘BEGIN{...};{...};END{...}’ 文件

BEGIN{...}预先的条件,指定awk命令前的初始化操作

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

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

区幂运算
[root@test2 opt]# awk 'BEGIN{print 10*2}' 
20
[root@test2 opt]# awk 'BEGIN{print 2**2}' 
4
[root@test2 opt]# awk 'BEGIN{print 2^3}' 
8
变量赋值 -v
[root@test2 opt]# sh test1.txt 
7
[root@test2 opt]# vim test1.txt
​
a=3
b=4
sum=$(awk -v a="$a" -v b="$b" 'BEGIN{print a+b}')
echo $sum

区幂运算

[root@test2 opt]# sh test1.txt 
输入一个数3
输入一个数4
81
[root@test2 opt]# vim test1.txt
read -p "输入一个数" a
read -p "输入一个数" b
sum=$(awk -v a="$a" -v b="$b" 'BEGIN{print a^b}')
echo $sum

指定分隔符

[root@test2 opt]# awk -v FS=":" -v OFS="==" '{print $1,$3}' /etc/passwd
​

RS以什么分隔符作为换行的标记

[root@test2 opt]# echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
​
[root@test2 opt]# echo $PATH | awk -v RS=":" '{print $1}'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin

使用awk进行条件判断打印

[root@test2 opt]# awk -F: '$3>999{print $0}' /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
wbl:x:1000:1000:wbl:/home/wbl:/bin/bash

取反

[root@test2 opt]# awk -F: '!($3>5){print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

等于=是赋值 ==是查找

[root@test2 opt]# awk -F: '$3==999{print $0}' /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
awk的精确筛选

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

$n-"字符串":该字段包含某个字符串

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

$n=="字符串":该字段等于某个字符串

$n!=="字符串":该字段不等于某个字符串

$n-"字符串":

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

取列不能范围操作
[root@test2 opt]# awk -F: '$7~"bash" {print ($1,$2,$3)}' /etc/passwd 
root x 0
wbl x 1000

$n== 是精确查找路径要完整

[root@test2 opt]# awk -F: '$7=="/bin/bash" {print ($1,$2,$3)}' /etc/passwd 
root x 0
wbl x 1000

/etc/passwd 第一列=wbl 且第七列=/bin/bsah

[root@test2 opt]# awk -F: '($1=="wbl")&&($NF=="/bin/bash") {print $1,$NF}' /etc/passwd
wbl /bin/bash
​
逻辑关系  &&是且  ||是或
[root@test2 opt]# awk -F: '($1=="ntp")||($NF=="/bin/bash") {print $1,$NF}' /etc/passwd
root /bin/bash
ntp /sbin/nologin
wbl /bin/bash

curl

curl是一个强大的命令

获取和发送数据

curl www.baidu.com

curl 192.168.65.10

获取网页内容并且输出

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

-O 下载文件到本地

-x 发送post请求

-i 可以获取web软件的版本(服务端没有隐藏版本号)

awk 按行取列

awk 精确筛选

awk 运算符

awk如何取小数点几位及小数运算怎么取整

%.2f 取小数点后两位

[root@test2 opt]# sum=$(awk 'BEGIN{printf "%.2f", 1.222+2.222}')
[root@test2 opt]# echo $sum
3.44

%.F 取整

[root@test2 opt]# sum=$(awk 'BEGIN{printf "%.F", 1.222+2.222}')
[root@test2 opt]# echo $sum
3

面试题

awk的三元素表达

[root@test2 opt]# awk -F: '$3>999{print $0}' /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
wbl:x:1000:1000:wbl:/home/wbl:/bin/bash
[root@test2 opt]# awk -F: '{if ($3>999){print $0}}' /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
wbl:x:1000:1000:wbl:/home/wbl:/bin/bash
[root@test2 opt]# 

if else 语句

[root@test2 opt]# awk -F: '{num=($3>$4)?$3:$4;{print num,$0}}' /etc/passwd
num=($3>$4)?$3:$4;
?就是if
:就是else
;就是fi
if ($3>$4)
then
echo $3
else
echo $4
fi

取出文件里的主机名

[root@test2 opt]# cat test1.sh | awk -F '[ .]+' '{print $2}'
www
mail
linux
ftp
blog
[root@test2 opt]# cat test1.sh | awk '{print $2}' | awk -F. '{print $1}'
www
mail
linux
ftp
blog

统计/etc/下的文件的总大小?awk实现

[root@test2 opt]# ll /etc/ | awk  '/-/{print sum+=$5} END{print "文件总大小:"sum/1024"M"}'
​
文件总大小:1112.56M

作业

监控内存 、cpu、硬盘的根目录,超过80%提示用户,写成函数库的形式,每天上午的8.50执行一次脚本。

[root@test2 opt]# df -h | awk 'NR==2{print sum=$5} END{print "占用:"sum"%"}' | tr -d "%"
26
占用:26
[root@test2 opt]# top -b -n 1 | awk 'NR==3{print sum1=$2+$4} END{print "cpu占用总量:"sum1"%"}'
1.5
​
cpu占用总量:1.5%
[root@test2 opt]# free -m | awk 'NR==2{printf "%.2f", sum2=($3/$2)*100} END{print "内存占用量:"sum2"%
​
5.93内存占用量:5.93362%

调用

[root@test2 opt]# vim diaoyong.sh 
​
. /opt/test1.sh
a=`yingpan $sum1`
echo "$a"
​
b=`cpu $sum2`
echo "$b" 
​
c=`neicun $sum3`
echo "$c"

函数库

[root@test2 opt]# vim test1.sh 
​
yingpan () {
sum1=$(df -h | awk 'NR==2{print $5}' |tr -d "%")
if [[ $sum1 > 80 ]]
then
echo "警告!硬盘用量达到:$sum1"
else
echo "当前硬盘用量:$sum1%"
fi
}
​
cpu () {
sum2=$(top -b -n 1 | awk 'NR==3{print (sum2=$2+$4)}')
if [[ $sum2 > 80 ]]
then
echo "警告!cpu用量达到:$sum2"
else
echo "当前cpu用量:$sum2%"
fi
}
​
neicun () {
sum3=$(free -m | awk 'NR==2{printf "%.F", ($3/$2)*100}')
if [[ $sum3 > 80 ]]
then
echo "警告!内存占用量:$sum3"
else
echo "当前内存用量:$sum3%"
fi
}

执行

[root@test2 opt]# sh diaoyong.sh 
当前硬盘用量:26%
当前cpu用量:0%
当前内存用量:6%

以上是实践

相关文章:

awk

awk grep 查 sed 增删改查 awk 按行取列 awk默认分割符&#xff1a; 空格&#xff1b;tab键。多个空格压缩成一个空格 [roottest2 opt]# cat awk.txt 1 2 3 [roottest2 opt]# awk {print $3} awk.txt 3 awk的工作原理&#xff1a; 根据指令信息&#xff0c;逐行的读…...

如何加速AI原生应用进程?华为云开天aPaaS提出新范式

每一次新旧代际转换时&#xff0c;都会上演这样的一幕&#xff1a;“畅想很多&#xff0c;落地很少”&#xff0c;AI原生应用似乎也不例外。 关于AI原生应用的呼声已经持续一段时间&#xff0c;但普通用户对“AI原生”依然陌生。除了新业态普及的周期性&#xff0c;AI原生应用…...

Matlab基础语法:变量和数据类型,基本运算,矩阵和向量,常用函数,脚本文件

目录 一、变量和数据类型 二、基本运算 三、矩阵和向量 四、常用函数 五、脚本文件 六、总结 一、变量和数据类型 Matlab 支持多种数据类型&#xff0c;包括数值类型、字符类型和逻辑类型。掌握这些基本的变量和数据类型&#xff0c;是我们进行数学建模和计算的基础。 数…...

弥补iPhone不足,推荐金鸣识别等几款APP神器

在数字时代的浪潮中&#xff0c;iPhone以其独特的设计和强大的性能赢得了全球众多用户的喜爱。然而&#xff0c;即便是这样一款近乎完美的设备&#xff0c;也难免存在一些局限性和缺陷。幸运的是&#xff0c;App Store中蕴藏着许多鲜为人知的app&#xff0c;它们可以弥补iPhone…...

KLayout 中的默认数据类型

KLayout 中的默认数据类型 这里给大家介绍一下 KLayout 中的默认数据类型。从这个官方文档 KLayout 数据类型 中我们可以获取到 KLayout 中的默认数据类型有如下几种&#xff1a; Column 1Column 2TypeBoolean布尔值TypeCallback按键返回类型TypeDouble浮点数类型TypeInt整型Ty…...

视频云存储平台LntonCVS国标视频平台功能和应用场景详细介绍

LntonCVS国标视频融合云平台基于先进的端-边-云一体化架构设计&#xff0c;以轻便的部署和灵活多样的功能为特点。该平台不仅支持多种通信协议如GB28181、RTSP、Onvif、海康SDK、Ehome、大华SDK、RTMP推流等&#xff0c;还能兼容各类设备&#xff0c;包括IPC、NVR和监控平台。在…...

C语言 将程序第4,5行改为 c1=197;c2=198;将程序第3行改为int c1,c2;

问题代码如下&#xff1a; #include<stdio.h> int main() { char c1,c2; c197; c298; printf(“c1%c,c2%c\n”&#xff0c;c1,c2); printf(“c1%d,c2%d\n”&#xff0c;c1,c2); return 0; } 运行时会输出什么信息&#xff1f;为什么&#xff1f;如果将程序第4&am…...

【总线】AXI4第五课时:信号描述

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣&#xff0c;那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者&#xff0c;AXI4以其高性能和高度可扩展性&#xff0c;成为了现代电子系统中不可或缺的通信桥梁…...

创建单例模式的六种方式

一、单例模式 单例模式是一种创建型的设计模式&#xff0c;构造函数是私有的&#xff0c;因此只能在类中创建一个实例&#xff0c;且对外提供一个静态公有方法获取这个实例。 二、创建方法 1. 懒汉式&#xff08;线程不安全&#xff09; public class Singleton{private st…...

实用软件下载:CrossOver 2024最新安装包及详细安装教程

​根据软件大数据显示上传或者手动输入软件都非常简单&#xff0c;一般来说CrossOver会自动连接到一个Win文件共享服务器&#xff08;Samba或CIFS&#xff09;上&#xff0c;使用者能够直接在这个服务器中选择并上传软件执行文件。实际上我们可以这样讲调整CrossOver设置&#…...

开启调试模式

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 run()方法虽然适用于启动本地的开发服务器&#xff0c;但是每次修改代码后都要手动重启它。这样并不够方便&#xff0c;如果启用了调试支持&#xff…...

pygame 绘制一个大黑脸

# 编写一个Python程序&#xff0c;实现一个眨眼的动画效果。该动画效果应该在屏幕上显示一个人脸&#xff0c;并在一定的时间间隔内使眼睛闭合和睁开。 import pygame import timepygame.init() # 设置窗口大小 screen_width 800 screen_height 600 screen pygame.display.s…...

XMLXXE实体注入

XML&XXE实体注入 原理 XML被设计为传输和存储数据&#xff0c;XML文档结构包括XML声明、DTD文档类型定义&#xff08;可选&#xff09;、文档元素&#xff0c;其焦点是数据的内容&#xff0c;其把数据从HTML分离&#xff0c;是独立于软件和硬件的信息传输工具。等同于JSO…...

艺术家电gorenje x 设计上海丨用设计诠释“生活的艺术”

2024年6月19日—22日&#xff0c;艺术家电gorenje亮相“设计上海”2024&#xff0c;以“gorenje是家电更是艺术品”为题&#xff0c;为人们带来融入日常的艺术之美。设计上海2024不但汇集了国内外卓越设计品牌和杰出独立设计师的家具设计作品&#xff0c;还联合国内外多名设计师…...

【刷题篇】链表

文章目录 1、两数相加2、两两交换链表中的节点3、 重排链表4、 合并 K 个升序链表5、 K 个一组翻转链表 1、两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数…...

若依框架,小程序访问后端,后端访问客户端,客户端读取图片返回

服务端代码: import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; …...

os7安装gitlab

gitlab安装要求&#xff1a;os7以上版本&#xff0c;4G内存&#xff0c;磁盘50GB 1.克隆 由于我这里不想影响原来的&#xff0c;所以这里克隆一个os系统。如果其他是第一次安装则不用。 2.修改ip地址 cd /etc/sysconfig/network-scriptsvi ifcfg-ens33 按&#xff1a;insert…...

木头姐:将出于经济方面的考虑支持特朗普

美国投资公司Ark Invest的首席执行官凯西•伍德表示&#xff0c;她计划在今年的总统选举中投票给共和党候选人、美国前总统唐纳德•特朗普。 “就像我对我的孩子们说的……就像我对他们说的&#xff0c;‘听着&#xff0c;我要把票投给能为我们的经济做得最好的人。’伍德周末…...

sql注入登陆绕过

此列表包含通过XPath、LDAP和SQL注入绕过登录的有效负载(按此顺序)。 使用此列表的方法是将前200行作为用户名和密码。然后,先将完整的列表放入用户名中,然后放入密码输入,同时放入一些密码(如Pass1234)或一些已知的用户名(如admin)。 admin password 1234 123456 root to…...

QT利用QGraphicsDropShadowEffect效果及自定义按钮来实现一个炫酷键盘

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent<...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

js 设置3秒后执行

如何在JavaScript中延迟3秒执行操作 在JavaScript中&#xff0c;要设置一个操作在指定延迟后&#xff08;例如3秒&#xff09;执行&#xff0c;可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法&#xff0c;它接受两个参数&#xff1a; 要执行的函数&…...