当前位置: 首页 > 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<...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...