shell文本三剑客——awk命令【☆】

目录

一、akw原理

二、命令格式

三、常用变量

四、awk的用法

1.输出整行内容

2.按字段输出文本内容

3.按列输出文件内容 FS变量为列分隔符

4.awk的三个模式

5. awk ‘控制语句条件 {操作}’ 文件

6.awk的数组

7.awk的应用


一、akw原理

        逐行读取文本,默认以空格或tab键为分隔符分割,将行内容分隔成各个字段保存到内建变量中,并按模式或条件执行编辑命令。与sed命令不同的是,sed常用于整行的处理,awk倾向于将一行内容分成多个字段再处理。在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。

二、命令格式

awk 选项 ‘模式或条件 {操作}’ 文件1 文件2...

awk -f 脚本文件 文件1 文件2...

三、常用变量

  • FS:列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
  • NF:当前处理的行的字段个数。
  • NR:当前处理的行的行号(序数)。
  • $0:当前处理的行的整行内容。
  • $n:当前处理行的第n个字段(第n列)。
  • FILENAME:被处理的文件名。
  • RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是'\n'

四、awk的用法

1.输出整行内容

awk '{print $0}' 文件名     #打印所有行内容

awk 'NR==1{print $0}' 文件名     #打印第1行内容

awk 'NR>=10{print $0}' 文件名    #查看文件第十行及后面所有行的内容

awk '/^字符串/{print $0}' 文件名    #查看文件以“字符串”开头的所有行内容

awk '/字符串$/{print $0}' 文件名    #查看文件以“字符串”结尾的所有行内容,如果存在/,需要用\转义。

awk '(NR==10)||(NR==30){print $0}' 文件名    #查看文件的第10行和第30行内容

查看区间1-3行内的内容方法一:awk 'NR==1,NR==3{print $0}' 文件名

查看区间2-7行内的内容方法二:awk '(NR<=7)&&(NR>=2){print $0}' 文件名

awk '(NR>=7)||(NR<=2){print $0}' 文件名   #查看文件前2行和7行之后的内容

awk '/\/bin\/bash$/{print $0}' 文件名       #查看文件以/bin/bash结尾的行内容

awk '(NR%2)==0 {print $0}' 文件名    #打印文件的偶数行内容

awk '(NR%2)==1 {print $0}' 文件名    #打印文件的奇数行内容

awk '{print FNR,$0}' 1.txt 2.txt     #同时打印多个文件使用FNR显示行号不会连续计数

awk 'BEGIN {x=0};/\/bin\/bash$/{x++};END {print x}' /etc/passwd     #统计文件中以XX结尾的行

2.按字段输出文本内容

awk -F '字段分隔符' 'NR==n {print $0}'          输出 第n行的 整行内容
awk -F '字段分隔符' 'NR==n {print $1}'          输出 第n行的 第一个字段的内容
awk -F '字段分隔符' 'NR==n {print $1,$NF}'  输出 第n行的 第一个字段和最后一个字段的内容
awk -F '字段分隔符' 'NR==n,NR==M {print $1}'     输出 第n行到第m行的 第一个字段的内容
awk -F '字段分隔符' 'NR>=n&&NR<=M {print $1}'   输出行号大于等于n小于等于m的行的第一个字段内容     
awk -F '字段分隔符' 'NR==n||NR==M {print $1}'   输出 第n行第m行的 第一个字段的内容
awk -F '字段分隔符' '/字符串/ {print $1}'        输出包含指定字符串的行的 第一个字段的内容
awk -F '字段分隔符' '/正则表达式/ {print $1}'  输出 匹配正则表达式的行的 第一个字段的内容
awk -F '字段分隔符' '$1>=n {print $0}'           输出第一个字段的数值大于等于n的 整行内容
                                    == != >= > <= <
awk -F '字段分隔符' '$1~"字符串" {print $0}'  输出第一个字段包含指定字符串的 整行内容
                                     ~(包含) !~(不包含) ==(等于) !=(不等于)

awk -F 指定分割符查看文件中以XX结尾的行内容的第x个字段

awk -F 指定分割符查看文件的多个字段

awk -F 指定分割符查看文件的第一个字段和最后一个字段(NF默认每行的字段数,每行字段不一致的话可以用$NF表示最后一个字段

用FS="分隔符" 查看指定字段(FS是列分割符的意思,先指定为":"再去执行,效果与awk -F相同)

awk -F: '$3<5 {print $0}' /etc/passwd    #查看文件第三个字段小于5的行内容

awk -F: '$3<5 {print $1,$NF}' /etc/passwd   #查看文件第三个字段小于5的行,只显示第1个和最后一个字段

awk -F: '!($3<1000) {print $1,$NF}' /etc/passwd      #查看文件第三个字段小于1000的行,显示第1和最后一个字段
awk -F: '!($3<1000) {print $0}' /etc/passwd      #查看文件第三个字段小于1000的行,显示整行内容

awk -F: '($3<5) {print NR; print $0}' /etc/passwd    #查看文件第三个字段小于5的行,显示行号和整行内容

 awk -F: '$7~"bash" {print NR,$0}' /etc/passwd      #查看第n个字段包含xx字符的行号和行内容

awk -F: 'NR==1||NR==2 {print $1}' /etc/passwd   #查看第一行和第二行的行的第一个字段

awk -F: 'NR>=3&&NR<=5 {print $0}' /etc/passwd   #查看行号大于等于三小于等于5的整行内容

awk 'BEGIN{OFS=":"};{$1=$1;print $0}' #指定输出内容的分隔符

3.按列输出文件内容 FS变量为列分隔符

awk ‘BEGIN{RS":"}; {print $0}’      指定列分割符为冒号输出整行内容

awk -F/ ‘BEGIN{RS":"}; {print $2}’   #指定列分割符为冒号,行分割符为斜杠,输出第二个字段的内容

4.awk的三个模式

awk三个模式里,多个大括号可以执行多个操作,也可以把对个操作用分号间隔合并到一个大括号里。

格式:awk ‘BEGIN {x=0}; 条件{...};END{...}’ 文件

  • begin表示处理文件前执行的操作;
  • 条件表示对匹配满足指定条件的文件行内容执行操作;
  • end表示处理完文件所有航内容后要执行的操作。

5. awk ‘控制语句条件 {操作}’ 文件

 awk '变量=条件表达式?值1:值2; {操作}' 文件    #行内容是否符合表达式,如果条件成立则变量取值1,条件不成立则变量取值2。【三元运算符 条件表达式?值1:值2】

awk '{if(语句条件) {操作}}’ 文件    #满足if的条件的行 则执行操作

awk 'BEGIN while("命令" | getline)每次循环的操作;{操作}' getline获取行内容并跳到下一行

6.awk的数组

awk 'BEGIN{a[0]=10;a[1]=20; print a[1]}'          --->输出结果为20

awk 'BEGIN{a[0]=10;a[1]=20; print a[0}}'          --->输出结果为10

awk 'BEGIN{a["abc"]=10;a["xyz"]=20;print a["abc"]}'        --->输出结果为10

awk 'BEGIN{a["abc"]=10;a["xyz"]=20;print a["xyz"]}'        --->输出结果为20

awk 'BEGIN{a["abc"]="aabbcc";a["xyz"]="xxyyzz";print a["xyz"]}'        --->输出结果为xxyyzz

awk 'BEGIN{a[0]=10;a[1]=20;a[2]=30;for(i in a){print i,a[i]}}'    i 遍历的是变量a的下标

注意:BEGIN中的命令只执行一次。awk数组的下标除了可以使用数字,也可以使用字符串,字符串需要使用双引号

7.awk的应用

 awk查看内存使用率

free | awk '/Mem:/{print int($3/$2*100)"%"}'

awk命令查看cpu使用率

 top -b -n1 | awk -F, '/^%Cpu/{print $4}' | awk '{print 100-$1"%"}'

awk查看磁盘使用率

df | grep -w "/" | awk '{print $5}' | awk -F% '{print 100-$1"%"}'

awk查看系统运行时长

date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y%m%d %H:%M:%S"

awk获取IP地址

ifconfig ens33 | awk 'NR==2 {print $2}'

awk查看系统平均负载

uptime | awk -F, '{print $3}' | awk '{print $3}'

awk获取网卡流量

ifconfig ens33 | awk -F '(' '/RX packets/{print $2}' | awk -F ')' '{print $1}'

 awk将ssh远程登录失败超过5次的IP导入到黑名单里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/840205.shtml

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

相关文章

AI爆文写作:标题需要什么?情绪炸裂,态度要激烈,行为要夸张!

现在这个传播环境下&#xff0c;在公域中&#xff0c;轻声细语&#xff0c;慢慢的说&#xff0c;无法吸引到注意&#xff0c;没有人搭理。 标题要需要情绪张扬&#xff0c;态度激烈&#xff0c;行为夸张&#xff0c;大声喧闹。 唐韧的用户群是互联网产品经理&#xff0c;阅读量…

基于GA遗传优化的CNN-GRU的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 CNN-GRU模型架构 4.2 GA优化CNN-GRU流程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ...........................................…

45岁前TVB有型熟男生图流出

凭无线处境剧《爱回家》中饰演律师「严谨」一角成功入屋的张达伦&#xff0c;于2022年约满无线离巢后&#xff0c;正式「卖身」给杜琪峰成为旗下艺人&#xff0c;先后亮相ViuTV剧集及综艺节目&#xff0c;又参与电影演出&#xff0c;作多方面尝试和发展。 日前有网民食完糖水在…

spring boot集成Knife4j

文章目录 一、Knife4j是什么&#xff1f;二、使用步骤1.引入依赖2.新增相关的配置类3.添加配置信息4.新建测试类5. 启动项目 三、其他版本集成时常见异常1. Failed to start bean ‘documentationPluginsBootstrapper2.访问地址后报404 一、Knife4j是什么&#xff1f; 前言&…

大语言模型实战——最小化agent

1. agent是什么 大模型拥有语言理解和推理能力后&#xff0c;就相当于拥有了大脑&#xff0c;要让模型发挥更大的潜力&#xff0c;就需要给它安装上手臂&#xff0c;让它拥有行动的能力。 而Agent就是一个将语言模型和外部工具结合起来的智能体&#xff0c;它使用语言模型的推…

“从根到叶:使用决策树导航数据”

目录 一、说明 二、什么是决策树&#xff1f; 三、基本概念&#xff1a; 四、工作原理&#xff1a; 五、分类原理分析 5.1 信息熵&#xff1a; 5.2 信息增益&#xff1a; 5.3 基尼杂质&#xff1a; 5.4 基尼系数和熵的区别&#xff1a; 六、对于回归决策树&#xff1a; 6.1 均方…

解决el-image只能点击关闭按钮才能关闭的问题

问题&#xff1a;el-image打开大图预览时&#xff0c;只能点击关闭按钮才能关闭&#xff0c;点击蒙层不能关闭的 methods: {handleClickStop() {this.$nextTick(() > {const domImageView document.querySelector(".el-image-viewer__mask") // 获取遮罩层domif …

DOM【事件、操作节点、DOM案例】--学习JavaEE的day49

day49 JS核心技术 DOM 继day48 事件 键盘事件 监听器&#xff1a;onkeydown、onkeypress、onkeyup <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><input type"text&q…

前端请求超时截断,axios timeout设置未生效情况记录

问题描述 前端请求超时截断&#xff0c;axios timeout设置未生效情况记录 timeout设置方式&#xff1a; 表现&#xff08;前端超过5min报错500&#xff0c;直接访问接口超过5min能够正常响应&#xff09;&#xff1a; 问题原因 上面的配置设置时间为1000min&#xff0c;明显…

前端开发攻略---三种方法解决Vue3图片动态引入问题

目录 1、将图片放入public文件夹中 2、使用 /src/.... 路径开头 3、生成图片的完整URL地址&#xff08;推荐&#xff09; 1、将图片放入public文件夹中 使用图片&#xff1a;路径为 /public 开头 <template><div><img :src"/public/${flag ? 01 : 02}.jp…

【电子学会】2023年09月图形化一级 -- 芝麻开门

芝麻开门 1. 准备工作 &#xff08;1&#xff09;删除小猫角色&#xff0c;添加角色Key&#xff1b; &#xff08;2&#xff09;删除白色背景&#xff0c;添加背景Castle 1和Pathway。 2. 功能实现 &#xff08;1&#xff09;点击绿旗&#xff0c;钥匙在舞台中间&#xff…

SQL——SELECT相关的题目

目录 197、上升的温度 577、员工奖金 586、订单最多的客户 596、超过5名学生的课 610、判断三角形 620、有趣的电影 181、超过经理收入的员工 1179、重新格式化部门表 1280、学生参加各科测试的次数 1068、产品销售分析I 1075、项目员工I 1084、销售分析III 1327、列出指…

2024最新 Jenkins + Docker 实战教程(六)- Jenkins配置邮箱接收构建通知

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

【数据结构】二叉树的功能实现

文章目录 关于二叉树的创建如何创建二叉树实现二叉树的前、中、后序遍历层序遍历 关于二叉树的创建 在笔者的上一篇文章中堆进行了一个详细介绍&#xff0c;而二叉树是以堆为基础进行创建&#xff0c;它与堆的显著不同是 堆像是一个线性结构&#xff0c;堆的结构往往是一个数…

PHP生成二维码+二维码包含logo图片展示

composer require chillerlan/php-qrcode 用到的扩展自己安装&#xff08;注&#xff1a;只生成二维码只要开gd扩展就行&#xff09; 仅生成二维码看这个&#xff1a; use chillerlan\QRCode\QRCode;public function QRCode(){$qrcode new QRCode();$url "http://ww…

Beta 分布和 Gamma 分布

0. 摘要 本文主要介绍 B e t a Beta Beta 分布和 G a m m a Gamma Gamma 分布之间的关系, 以及两者的采样方法. 其实, PyTorch、Numpy、Scipy 等一些机器学习包已经实现了对这两种分布的包装, 本文主要目的是理解背后的大致原理. 1. Beta 分布 设 X ∼ B e t a ( α , β…

金蝶「起舞」,AI进化

能清晰感受到的是&#xff0c;金蝶仍然在不断进化&#xff0c;甚至伴随着AI时代的到来&#xff0c;它的进化信号愈发明显。 这些进化对应的具体动作是&#xff0c;把过去多年的服务模型整合成AI模型&#xff0c;把具体的服务“工艺”整理成流程编排能力&#xff0c;以及从740…

水下哨兵 智能守护——北斗人员落水报警与快速应急响应方案

随着科技的不断发展&#xff0c;人们对于安全的需求也越来越高&#xff0c;尤其是在水域活动中&#xff0c;落水事故时有发生&#xff0c;给人们的生命和财产安全带来了很大威胁。为了更好地保障水域活动者的安全&#xff0c;北斗短报文技术被广泛应用于落水报警系统中&#xf…

不平衡数据研究:分配权重 合并2个loader

分配权重&#xff08;基于实例分配&#xff0c;基于类分配&#xff09; import numpy as np import torch from torch.utils.data import DataLoader, WeightedRandomSampler, Dataset# Mock dataset class class MockDataset(Dataset):def __init__(self, data, targets):sel…