awk的用法

目录

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 ]];thenecho "当前CPU负载${c}%,超过80%!请及时处理!"
elseecho "CPU负载正常,当前负载${c}%"
fi
}# 检测内存负载
memtest () {
local b=$(free -m | awk 'NR==2 {printf "%.F", $3/$2*100 }')
if [[ $b -ge 80 ]];thenecho "当前内存负载${b}%,超过80%!请及时处理!"
elseecho "内存负载正常,当前负载${b}%"
fi
}# 检测根目录负载
blktest () {
local a=$(df -h | awk '$NF=="/" {print $5}' | tr -d "%")
if [[ $a -ge 80 ]];thenecho "根目录当前使用达到${a}%,超过80%!请及时处理!"
elseecho "根目录使用空间正常,当前已使用${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.mzph.cn/pingmian/37125.shtml

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

相关文章

vivo 互联网自研代码评审 VCR 落地实践

作者&#xff1a;vivo 互联网效能平台团队- Chi Wei 本文介绍了vivo工程效能团队基于 Gitlab、Gerrit等开源工具搭建的VCR平台&#xff0c;代码评审idea插件开发及开发过程中遇到的挑战、困难&#xff0c;并分享了相应的应对策略和优化方案。 代码评审是软件质量保证一种活动&…

墨刀原型--多tab切换显示对应页面场景交互步骤

一般我们画原型页面&#xff0c;PC端或者APP端或小程序端&#xff0c;都会有页面会切换多个tab或状态&#xff0c;同时对应页面显示对应的页面数据。 设计思路如下&#xff1a; 以订单列表页面为例&#xff1a; 可以将订单列表页面分为3部分&#xff0c;固定的头部、状态栏、…

java和网络安全,哪个就业前景更大?

常年以来&#xff0c;Java一直占据着程序语言的前三名&#xff0c;因此也就成了许多进入IT行业的首选语言。但随着5G时代的兴起&#xff0c;网络安全也成了当今最火热的“风口行业”。导致很多年轻人不知如何选择&#xff0c;一直处于纠结徘徊的状态。下面盾叔就带大家了解一下…

Qt—贪吃蛇项目(由0到1实现贪吃蛇项目)

用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮&#xff0c;给它设置样式&#xff0c;并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩5.1 从文件里提取分数5.2 把贪吃蛇的长度存入…

关于vue创建项目失败报错(镜像过期)的解决方案

在新建vue项目时出现以下错误&#xff1a; 原因&#xff1a; npm.taobao.org和registry.npm.taobao.org旧域名于2021年官方公告域名更换事件&#xff0c;已于2022年05月31日零时起停止服务&#xff0c;域名HTTPS证书于2024年1月22日正式到期&#xff0c;不可再用。 解决方案:…

【vue3】【vant】 移动端古诗词句子发布收藏项目

更多项目点击&#x1f446;&#x1f446;&#x1f446;完整项目成品专栏 【vue3】【vant】 移动端古诗词句子发布收藏项目 获取源码方式项目说明&#xff1a;其中功能包括素材包含&#xff1a;项目运行环境运行截图 获取源码方式 加Q群&#xff1a;632562109项目说明&#xf…

突破Web3红海,DePIN如何构建创新生态系统?

撰文&#xff1a;TinTinLand 本文来源香港Web3媒体Techub News专栏作者TinTinLand 2023 年 DePIN 赛道的火热成为 Web3 行业的重点关注方向&#xff0c;当前如何以可扩展、去中心化、安全方式推动 DePIN 赛道赋能下的 AI 版图建设&#xff0c;寻找更多 Web3 行业创新机遇成为…

JS(JavaScript)事件处理(事件绑定)趣味案例

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

创新前沿:Web3如何颠覆传统计算机模式

随着Web3技术的快速发展&#xff0c;传统的计算机模式正面临着前所未有的挑战和改变。本文将深入探讨Web3技术的定义、原理以及它如何颠覆传统计算机模式&#xff0c;以及对全球科技发展的潜在影响。 1. 引言&#xff1a;Web3技术的兴起与背景 Web3不仅仅是技术创新的一种&…

QT中的样式表.qss文件

一、前言 qt中样式表的改变有几种方法&#xff0c;第一种就是直接在ui界面对应的组件右键修改样式表&#xff0c;还有一种就是直接在程序里面修改样式表&#xff0c;我知道的还有一种就是qss文件&#xff0c;这个文件就是将在程序中写的修改样式表的语句写道qss文件中&#xff…

次世代霍尔电磁摇杆搭配磁悬浮马达,这款手柄手感超丝滑,谷粒金刚3Pro体验

燥热的天气里&#xff0c;周末在家打上几局游戏&#xff0c;确实更容易放松身心&#xff0c;玩游戏的时候&#xff0c;键鼠、手柄一类的游戏外设特别重要&#xff0c;对我们的游戏体验影响很大&#xff0c;所以挑选起来总是格外挑剔。现在国产的游戏手柄已经今非昔比了&#xf…

grpc学习golang版(八、双向流示例)

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件三、编写server服务端四、编写client客…

YouTube广告投放指南:如何投放 YouTube视频广告

在海外广告投放中&#xff0c;YOutube是重要的渠道之一。这篇文章Maskfog将为你介绍Youtube广告类型以及广告投放流程&#xff0c;继续看下去&#xff01; YouTube 视频广告的类型 1.信息流视频广告 信息流视频广告显示在 YouTube 主页、搜索结果页面上&#xff0c;并作为 Yo…

餐饮点餐系统

餐饮点餐系统是一款为餐厅和顾客提供便捷点餐服务的在线平台。 1.DDL CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,email VARCHAR(100) UNIQUE…

python爬虫之scrapy框架基本使用

python爬虫之scrapy框架基本使用 1、环境安装&#xff1a;pip install scrapy 2、创建一个工程&#xff1a;scrapy startproject xxxPro 3、cd xxxPro 4、在spiders子目录中创建一个爬虫文件&#xff1a;scrapy genspider spiderName www.xxx.com 5、执行工程&#xff1a;scra…

3DEXPERIENCE平台正在推动仿真技术的创新,旨在创造仿真设计的新境界

随着企业数字化转型的不断推进&#xff0c;3DEXPERIENCE 平台正以其前瞻性的技术和服务重塑仿真设计领域的新高度&#xff0c;助力企业实现仿真技术的再次飞跃。该平台不仅整合了先进的仿真工具与设计流程&#xff0c;还促进了跨部门的协作&#xff0c;降低分析仿真对硬件的要求…

远程桌面无法复制粘贴文件到本地怎么办?

远程桌面不能复制粘贴问题 Windows远程桌面为我们提供了随时随地访问文件和数据的便捷途径&#xff0c;大大提升了工作和生活的效率。然而&#xff0c;在使用过程中&#xff0c;我们也可能遇到一些问题。例如&#xff0c;在通过远程桌面传输文件时&#xff0c;常常会出现无法复…

突破SaaS产品运营困境:多渠道运营如何集中管理?

随着数字化时代的到来&#xff0c;SaaS&#xff08;软件即服务&#xff09;产品已成为企业日常运营不可或缺的工具。然而&#xff0c;在竞争激烈的市场环境下&#xff0c;SaaS产品运营越来越重视多渠道、多平台布局&#xff0c;以更广泛地触及潜在用户&#xff0c;然而&#xf…

Android Native 客户端属性配置系统使用说明

Android Native 客户端属性配置系统使用说明 背景和问题现代 android 开发基本都基于 gradle 属性设置来进行定制化编译,随着项目的迭代,工程结构越发复杂,配置属性越来越多,越来越多的配置使得上手难度越来越大。 解决方案设计一般而言,在 android 开发中,Gradle 属性系…

新国都:昙花一现or未来可期?

从波动起伏到强势爆发&#xff0c;这份业绩能否持续&#xff1f; 今天我们抽取一名铁杆粉丝想要咨询的公司来说一说——新国都。 一句话总结这家以第三方支付为主营业务的公司业绩&#xff1a;盈利能力突然爆发&#xff0c;23年净利润暴增近16倍&#xff0c;24年Q1净利润大增6…