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默认分割符: 空格;tab键。多个空格压缩成一个空格 [roottest2 opt]# cat awk.txt 1 2 3 [roottest2 opt]# awk {print $3} awk.txt 3 awk的工作原理: 根据指令信息,逐行的读…...

如何加速AI原生应用进程?华为云开天aPaaS提出新范式
每一次新旧代际转换时,都会上演这样的一幕:“畅想很多,落地很少”,AI原生应用似乎也不例外。 关于AI原生应用的呼声已经持续一段时间,但普通用户对“AI原生”依然陌生。除了新业态普及的周期性,AI原生应用…...

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

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

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

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

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

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

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

实用软件下载:CrossOver 2024最新安装包及详细安装教程
根据软件大数据显示上传或者手动输入软件都非常简单,一般来说CrossOver会自动连接到一个Win文件共享服务器(Samba或CIFS)上,使用者能够直接在这个服务器中选择并上传软件执行文件。实际上我们可以这样讲调整CrossOver设置&#…...

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

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

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

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

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

若依框架,小程序访问后端,后端访问客户端,客户端读取图片返回
服务端代码: 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安装要求:os7以上版本,4G内存,磁盘50GB 1.克隆 由于我这里不想影响原来的,所以这里克隆一个os系统。如果其他是第一次安装则不用。 2.修改ip地址 cd /etc/sysconfig/network-scriptsvi ifcfg-ens33 按:insert…...

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

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 机器学习、深度学习能做什么? 1.2 什么是机器学习?1.2.1 定义1.2.2 数据集的构成 1.3 机器学习算法1.4 机器学习开发流程 2.特征工程2.1 数…...

【深度学习】python之人工智能应用篇——图像生成技术(一)
说明: 两篇文章根据应用场景代码示例区分,其他内容相同。 图像生成技术(一):包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术(二):…...

java 非srping 使用r2dbc操作mysql 增删改查代码
要在Java中使用R2DBC操作MySQL,首先需要添加相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: <dependency><groupId>dev.miku</groupId><artifactId>r2dbc-mysql</artifactId><version>0.8.…...

假冒国企现形记:股权变更视角下的甄别分析
启信慧眼-启信宝企业版 假冒国企公告2024-06-07,中粮集团有限公司官网发布《关于冒名中粮企业名单公告》。公告显示,”有不法分子通过伪造相关材料等方式,以我集团子公司名义开展业务,进行虚假宣传。经核实,上述公司假…...

Django 使用Apscheduler执行定时任务
Apscheduler 介绍 核心组件: 调度器、作业存储、执行器、触发器 调度器 BlockingScheduler 阻塞的调度器,适用于脚本 BackgroundScheduler 后台调度器,适用于非阻塞的应用如Web应用 AsyncIOScheduler 适用于 asyncio 的调度器 GeventSchedu…...

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

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

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

思维导图之计算机网络整体框架
高清自行访问:计算机网络整体框架 (yuque.com)...

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