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

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<...

机器学习(一)

机器学习 1.机器学习概述1.1 人工智能概述1.1.1 机器学习与人工智能、深度学习的关系1.1.2 人工智能的起点1.1.3 机器学习、深度学习能做什么&#xff1f; 1.2 什么是机器学习&#xff1f;1.2.1 定义1.2.2 数据集的构成 1.3 机器学习算法1.4 机器学习开发流程 2.特征工程2.1 数…...

【深度学习】python之人工智能应用篇——图像生成技术(一)

说明&#xff1a; 两篇文章根据应用场景代码示例区分&#xff0c;其他内容相同。 图像生成技术&#xff08;一&#xff09;&#xff1a;包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术&#xff08;二&#xff09;&#xff1a…...

java 非srping 使用r2dbc操作mysql 增删改查代码

要在Java中使用R2DBC操作MySQL&#xff0c;首先需要添加相关依赖。在Maven项目中&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>dev.miku</groupId><artifactId>r2dbc-mysql</artifactId><version>0.8.…...

假冒国企现形记:股权变更视角下的甄别分析

启信慧眼-启信宝企业版 假冒国企公告2024-06-07&#xff0c;中粮集团有限公司官网发布《关于冒名中粮企业名单公告》。公告显示&#xff0c;”有不法分子通过伪造相关材料等方式&#xff0c;以我集团子公司名义开展业务&#xff0c;进行虚假宣传。经核实&#xff0c;上述公司假…...

Django 使用Apscheduler执行定时任务

Apscheduler 介绍 核心组件&#xff1a; 调度器、作业存储、执行器、触发器 调度器 BlockingScheduler 阻塞的调度器&#xff0c;适用于脚本 BackgroundScheduler 后台调度器&#xff0c;适用于非阻塞的应用如Web应用 AsyncIOScheduler 适用于 asyncio 的调度器 GeventSchedu…...

Shopee API接口:获取搜索栏生成的商品结果列表

一、引言 此接口可以高效获取搜索栏生成的商品结果列表。本文将详细介绍这一核心功能&#xff0c;并探讨其在实际应用中的价值。 二、核心功能介绍——获取搜索栏生成的商品结果列表 请求API及返回示例 http://api.xxxx.com/sp/ll/search/item?keywordiphone&page1&am…...

选择门店收银系统要考虑哪些方面?美业系统Java源码分享私

开店前的一个重要事件就是选择门店收银软件/系统&#xff0c;尤其是针对美容、医美等美业门店&#xff0c;一个优秀专业的系统十分重要&#xff0c;它必须贴合门店的经营需求&#xff0c;提供更全面、便捷、高效的管理功能&#xff0c;帮助提升门店的服务质量和经营效益。 以下…...

智慧养老的养老方式及其技术实现与趋势

智慧养老是一种借助现代信息技术手段&#xff0c;为老年人提供更高效、便捷、个性化服务的养老模式。以下是一些常见的智慧养老方式&#xff1a; 1. 远程健康监测系统 通过智能穿戴设备&#xff0c;如手环、手表等&#xff0c;实时收集老年人的生理数据&#xff0c;如心率、血…...

思维导图之计算机网络整体框架

高清自行访问&#xff1a;计算机网络整体框架 (yuque.com)...

P7771 【模板】欧拉路径

网址如下&#xff1a; P7771 【模板】欧拉路径 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 忘掉了输出欧拉回路的方法&#xff0c;搞了我好久 关于欧拉回路的知识可以看我之前的博客&#xff1a; 一点关于欧拉回路的总结-CSDN博客 代码如下&#xff1a; #include<q…...