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

news2024/11/22 10:06:15

目录

一、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.coloradmin.cn/o/1690415.html

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

相关文章

SpringFramework实战指南

二、SpringFramework实战指南 目录 一、技术体系结构 1.1 总体技术体系1.2 框架概念和理解 二、SpringFramework介绍 2.1 Spring 和 SpringFramework概念2.2 SpringFramework主要功能模块2.3 SpringFramework 主要优势 三、Spring IoC容器和核心概念 3.1 组件和组件管理概念3…

基于灰狼优化算法优化RBF(GWO-RBF)的数据回归预测(多输入多输出)

代码原理及流程 基于灰狼优化算法优化多输入多输出&#xff08;MIMO&#xff09;的RBF神经网络的数据回归预测&#xff0c;可以采取以下步骤&#xff1a; 1. 数据准备&#xff1a;准备包含多个输入特征和多个输出目标的数据集&#xff0c;确保数据已经经过预处理和归一化。 …

探寻最强性能云电脑:ToDesk云电脑、无影云、网易云游戏、易腾云横测大比拼

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

massCode打造个人代码知识库的利器

缘起 作为一名软件工程师,我在编写代码时经常遇到这样的情况:我记得之前在某个应用程序中使用过某种语法,但我却不记得是在什么时候或哪个项目中使用的。通过浏览所有代码来找到这个语法是非常耗时的,尤其是当你不记得可以简化搜索的关键字时。此外,你可能有代码片段,但…

本地连不上远程阿里云MySQL数据库,密码对就是连不上

三步解决 设置安全组&#xff1a; 设置防火墙&#xff1a; iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT设置root用户连接host&#xff1a; 终端登录mysql&#xff0c;然后&#xff1a; use mysql; select user,host from user where use…

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

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

微信小程序-----基础加强(二)

能够知道如何安装和配置vant-weapp 组件库能够知道如何使用MobX实现全局数据共享能够知道如何对小程序的API 进行 Promise 化能够知道如何实现自定义tabBar 的效果 一.使用 npm 包 小程序对 npm 的支持与限制 目前&#xff0c;小程序中已经支持使用 npm 安装第三方包&#x…

【C语言回顾】文件操作

前言1. 文件打开模式2. 示例代码2.1 打开和关闭文件2.2 读写文件2.3 二进制文件操作 结语 #include<GUIQU.h> int main { 上期回顾: 【C语言回顾】动态内存管理 个人主页&#xff1a;C_GUIQU 专栏&#xff1a;【C语言学习】 return 一键三连; } 前言 各位小伙伴大家好&…

Java入门基础学习笔记47——ArrayList

什么是集合呢&#xff1f; 集合是一种容器&#xff0c;用来装数据的&#xff0c;类似数组。 有数组&#xff0c;为什么还要学习集合呢&#xff1f; 数组定义完成并启动后&#xff0c;长度就固定了。 而集合是大小可变&#xff0c;开发中用的最多的。 集合的特点&#xff1a;大…

EI数据库如何出具中文论文检索报告?

Ei Compendex数据库是全球最全面的工程检索二次文献数据库&#xff0c;它收录了7,000,000多篇论文的参考文献和摘要。这些论文出自5,000多种工程类期刊、会议论文集和技术报告。Ei Compendex收录的文献涵盖了所有的工程领域&#xff0c;其中大约22%为会议文献&#xff0c;90%的…

设计模式14——组合模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 组合模式&#xff08;Composit…

k8s——Pod详解

一、Pod基础概念 1.1 Pod定义 Pod是kubernetes中最小的资源管理组件&#xff0c;Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的&#xff0c;例如&#xff0c;用于管理Pod运行…

10个企业用的wordpress中文模板

移民wordpress主题 移民代办wordpress主题&#xff0c;适合做海外移民咨询的代理公司搭建wordpress企业官方网站使用。 https://www.jianzhanpress.com/?p5130 模特演出wordpress主题 暗黑风格的wordpress主题模板&#xff0c;适用于模特演出公司或艺人经纪公司搭建wordpre…

办公楼智慧公厕解决方案云平台,助力办公环境品质提升

在现代化的办公楼中&#xff0c;智慧公厕解决方案云平台正发挥着至关重要的作用&#xff0c;有力地助力办公环境品质的提升。 一、云平台优势 智慧公厕云平台具有高效的集成性&#xff0c;将各种设备和信息整合在一起&#xff0c;实现了统一管理和调度。云平台还可以和海量的设…

今晚7点,不见不散,图算法新书发布会

亲爱的朋友们&#xff1a; 你们好&#xff01; 在这个知识飞速发展的时代&#xff0c;我们始终相信&#xff0c;学习与创新是推动社会进步的不竭动力。因此&#xff0c;嬴图与机械工业出版社共同邀请您参加我们即将举办的《图算法&#xff1a;行业应用与实践》新书发布会&…

如何为社交feed场景设计缓存体系?no.35

Feed 流场景分析 Feed 流是很多移动互联网系统的重要一环&#xff0c;如微博、微信朋友圈、QQ 好友动态、头条/抖音信息流等。虽然这些产品形态各不相同&#xff0c;但业务处理逻辑却大体相同。用户日常的“刷刷刷”&#xff0c;就是在获取 Feed 流&#xff0c;这也是 Feed 流的…

0基础学习Mybatis系列数据库操作框架——Mysql的Geometry数据处理之WKT方案

大纲 几何结构构建点点集合线线集合面面集合几何信息集合 TypeHandlerSQL操作写入操作读取操作完整XML Mapper测试代码建表SQL总结代码参考资料 WKT全称是Well-Known Text。它是一种表达几何信息的字符串内容。比如点可以用WKT表示为POINT (3 3)&#xff1b;线可以用WKT表示为L…

Spark项目实训(一)

目录 实验任务一&#xff1a;计算级数 idea步骤分步&#xff1a; 完整代码&#xff1a; linux步骤分布&#xff1a; 实验任务二&#xff1a;统计学生成绩 idea步骤分布&#xff1a; 完整代码&#xff1a; linux步骤分步&#xff1a; 实验任务一&#xff1a;计算级数 请…

如何在cPanel面板中开启盗链保护

本周有一个客户&#xff0c;购买Hostease的主机&#xff0c; 客户购买的是Linux虚拟主机&#xff0c;带cPanel面板的。询问我们的在线客服&#xff0c;如何可以防止他的网站上的图片不被盗用。cPanel的盗链保护功能可以帮助客户防止图片被盗链。 盗链&#xff08;Hotlinking&a…

代码随想录-算法训练营day46【动态规划08:单词拆分、多重背包!背包问题总结篇!】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part08● 139.单词拆分 ● 关于多重背包&#xff0c;你该了解这些&#xff01; ● 背包问题总结篇&#xff01; 详细布置 关于 多重背包&#xff0c;力扣上没有相关的题目&#xff0c;所以今天大家的…