shell之三剑客awk(基础用法)

article/2025/9/22 13:01:37

文章目录

  • 一、awk概述
    • 1、awk工作原理
  • 二、awk的格式
  • 三、内置变量演示
    • 1、【$n】进行演示
    • 2、【$0】的演示
    • 3、【NF】(多少列) 和 【NR】(多少行)的演示
    • 4、面试题
    • 5、BEGIN开始和END结尾
    • 6、模糊匹配
    • 7、关于数值与字符串的比较
  • 四、总结

一、awk概述

AWK是一种处理文本文件的语言,是一个强大的文件分析工具。

它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描,过滤,统计汇总等工作,数据可以来自标准输入也可以是管道或文件。

1、awk工作原理

  • 当读到第一行时,匹配条件,然后执行指定动作,在接着读取第二行数据处理,不会默认输出。

  • 如果没有定义匹配条件,则是默认匹配所有数据行,awk隐含循环,条件匹配多少次,动作就会执行多少次。

  • 逐行读取文本,默认以空格或tab键为分割符进行分割,将分割所得的各个字段,保存到内建变量中,并按模式或或条件执行编辑命令。

与sed工作原理相比:

sed命令常用于一整行的处理。而awk比较倾向于将一行分成多个 “ 字段 ” 然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符。(&&“表示"与”、“||表示"或”、"!“表示非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。)

二、awk的格式

格式1:  awk  【选项】 '模式或条件{操作} '    文件名格式2: awk  -f  脚本文件   文件名

1、awk包含几个特殊的内建变量(可直接用)如下所示

内置变量功能
NF当前处理的行的字段个数(就是:有多少列)
NR当前处理的行的行号(就是:有多少行)
FNR读取文件的记录数(行号),从1开始,新的文件重新从1开始计数
$0当前处理的行的整行内容(就是:表示一行的内容)
$n当前处理行的第n个字段(就是:第n列)
FILENAME被处理的文件名
FS指定每行的字段分隔符,默认为空格或制表位(相当于选项 -F )
OFS输出字段的分隔符,默认也是空格
RS行分割符。awk从文件上读取资料时,将根据Rs的定义把资料切割成许多条记录,而awk一次仅读取一条记录,预设值是“\n“
ORS输出分割符,默认也是换行符

三、内置变量演示

1、【$n】进行演示

n为数字,数字为及就表示第几列

案例1:结合print进行输出,默认分隔符。

在这里插入图片描述

案例2:设定分割符号

在这里插入图片描述

案例3:输出时,显示列的空格

在这里插入图片描述

案例4:两列之间插入制表符

在这里插入图片描述

案例5:设置多个分割符

在这里插入图片描述

2、【$0】的演示

$0表示整行

在这里插入图片描述

3、【NF】(多少列) 和 【NR】(多少行)的演示

NR:表示该处理的行序号是多少NF:表示该处理的行,有多少列

案例1:打印每一行的列数

在这里插入图片描述

案例2:显示行号

在这里插入图片描述

案例3:显示行号,并显示每一行的内容

在这里插入图片描述

案例4:打印第二行,不加print也一样,默认就是打印

在这里插入图片描述

案例5:打印第二行的第一列

在这里插入图片描述

案例6:打印最后一列

在这里插入图片描述

案例7:打印总行数

在这里插入图片描述

案例8:打印文件最后一行

在这里插入图片描述

案例9:加上文字描述行数和列数

在这里插入图片描述

4、面试题

案例1:查看本机的ip地址多少,截取出来

在这里插入图片描述

案例2:查看本机流量有多少字节

在这里插入图片描述

案例3:查看根分区的可用量

在这里插入图片描述

5、BEGIN开始和END结尾

逐行执行开始之前执行什么任务,结束之后再执行什么任务,用BEGIN、END。

  • BEGIN:一般用来做初始化操作,仅在读取数据记录之前执行一次
  • END:一般用来做汇总操作,仅在读取完数据记录之后执行一次

在这里插入图片描述

案例1:在打印之前定义字段分割符为冒号

在这里插入图片描述

案例2:OFS定义了输出时以什么分隔,$1$2中间要用逗号分隔,因为逗号默认被映射为OFS变量,而这个变量默认是空格

在这里插入图片描述

案例2:可以看到当有多个文件时,序号会分别标好每一个文件内容的行号,不同文件会从头开始。(NR会连续在一起)

在这里插入图片描述

案例3:RS:指定以什么为换行符,这里指定是冒号,你指定的必须是原文里存在的字符

在这里插入图片描述

案例4:把多行合并成一行输出,输出的时候自定义以空格分隔每行,本来默认的是回车键

在这里插入图片描述

6、模糊匹配

精确匹配: 可以将要匹配的内容加上双引号。

用~表示包含,用!~表示不包含

在这里插入图片描述

7、关于数值与字符串的比较

在这里插入图片描述

加上逻辑运算: && ||

在这里插入图片描述

案例:打印1-200之间所有能被7整除并且包含数字7的整数数字

在这里插入图片描述

四、总结

awk常用操作是提取转换文本文件内容,awk功能十分强大,几乎其它文本处理命令能做的,awk都能做。

此处主要介绍awk的几种内置变量。

  • $n:表示截取哪一列,通常和print一起使用
  • $0:表示整行内容
  • NF:表示该行有多少列
  • NR:表示该行的行号
  • FNR:表示读取两个文件时,序号会分别从0开始标
  • FS:表示读取文件的分隔符(默认空格)
  • OFS:表示输入的内容以什么为分割符(默认空格)
  • RS:表示读取文件的以什么为换行符(默认\n)
  • ORS:表示输出的内容以什么为换行符(默认\n)
  • ~:表示包含
  • !~:表示不包含

http://chatgpt.dhexx.cn/article/wL2CKCXw.shtml

相关文章

《J2EE 学习笔记 之 idea 搭建 SSM 项目》

J2EE 学习笔记 之 idea 搭建 SSM 项目 详细步骤 step1 step2 step3 step4 step5

对于J2EE体系架构的理解

一、何为J2EE? J2EE架构是使用Java技术开发企业级应用的一种事实上的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。Java平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2S…

idea创建j2ee_IntelliJ IDEA 创建J2EE项目

IntelliJ IDEA 创建J2EE项目 方式一 1.File--NewProject--next,取个名字,意味着你的文件存放地。 2.Next--Next--勾选Web Application--Finish。 3.Edit Configurations--添加--tomcat--local--找到WEB容器所地 4.OK,这…

J2EE总结

1.J2EE介绍 1.企业级java简史 一.Java版本 (1)J2ME,功能非常有限,用于嵌入式设备 (2)J2SE包含原始的核心类库,用于桌面应用程序和浏览器中的Applet (3)J2EE,功能非常全面,用于数据处理和服务器端应用 二.对现有和新技术的继承&…

关于J2ee

学习完j2se,对Java有了大概的了解,但是对接下来要学习的j2ee却有点囧,因为从概念里也get不到它到底是个什么东西!so,从整体看j2ee,让百度告诉我答案。 Java2平台(1998年12月,SUN公司…

J2EE架构简介

J2EE 体系结构简介 J2EE (Java 2 Platform, Enterprise Edition)即Java2平台企业版,它提供了基于组件的方式来设计、开发、组装和部署企业应用。J2EE使用多层分布式的应用模型,这个多层通常通过三层或四层来实现: ①客…

概览J2EE

J2EE是一种基于组件与平台无关的技术架构。 J2EE核心是一组技术规范和指南,包含各类的组件、服务架构、以及技术层次。 一、 J2EE的体系结构 先来看一些概念: 1、组件:是提供业务服务的独立功能单元,易操作,属性和实…

J2EE 全面简介

J2EE 全面简介 刘湛 (jeru@163.net) 武汉大学信息与计算科学系学士2001 年 7 月 本文从五个方面对J2EE进行了比较全面的介绍。从J2EE的概念说起,到它的优势,到J2EE典型的四层模型,和它的框架结构,最后是J2EE十三种核心技术的一个简介。本文分门别类的对J2EE中的服务,组件,…

自己搭建一个局域网(两台电脑)

1.首先保证两台电脑都有联网 2.更改适配器把两台电脑设为固定IP,同时让分配的IP地址相邻 3.使用ping命令,看是否能ping通。是,创建完成。否,有问题,重新分配固定IP后尝试。 哎,学校固定IP好像还要申请,哈哈…

如何用笔记本创建局域网

怎么用笔记本创建局域网呢?会不会很难? 现在教一个简单的方法创建局域网。 1、首先使用快捷键“WinR”打开cmd。 2、接着在弹出的窗口输入netsh wlan set hostednetwork modeallow ssid(这里输入你想给你局域网起的名字) key(这里输入自己设定的密码)&…

搭建小型局域网

Packet Tracer 是 Cisco 公司针对 CCNA 认证开发的一个用来设计、配置和故障排除网络的模拟软件。Packer Tracer 模拟器软件比 Boson 功能强大,比 Dynamips 操作简单,非常适合网络设备初学者使用。 学习任务 1、安装 Packer Tracer; 2、利用…

局域网组建

(1)回答问题:要想为计算机分配IP地址,必须要安装什么协议? 肯定是TCP/IP协议,安装及分配IP地址方法如下。按下面路径:控制面板》网络和 Internet》网络和共享中心》更改适配器设置》找到本地连接》右键属性,然后 1) 添…

不同局域网内进行网络连接的建立方法

前言 在这互联网和物联网的时代,网络连接与通信被使用的越来越多,如何建立两个网络IP地址的连接 (TCP或者UDP连接),也是一门学问。之前项目中遇到了这方面的问题,也被纠缠了一番,查阅大量资料&…

企业局域网的组建步骤和方法

什么是局域网?所谓的局域网(Local Area Network,简称LAN),用于将有限范围内(例如一个实验室、一层办公楼或者校园)的各种计算机、终端与外部设备互联成网。企业局域网怎么建立?首先来了解下不同规模企业网络…

建立局域网的条件

建立局域网的条件 我的意思是硬件方面,比如说2台电脑连接在一个路由器上,那么可以通过设置来建立局域网吗?要是想并联多台电脑的话。。。还需要什么硬件来建立局域网?谢谢高人帮助 建立局域网,如果2113不上网的话&…

如何创建一个局域网

如果你在家庭里建设小型的局域网,只需网线、路由器或者集线器或交换机即可。将网线连好后,做相应的设置就可以组建成局域网了。推荐用路由器,较方便。 对于Windows xp,典型的路由器共享上网 以下方法是我试过,可以将已…

如何在win10系统建立局域网

在办公环境内,局域网的作用可不小。团队的文件管理,打印机等设备共享,部分之间资料的分享以及日程排期信息交互等等,都离不开局域网。本文主要和大家探讨如何在win10系统建立局域网。 更多系统安装教程尽在小白系统重装官网 系统…

局域网搭建

局域网(Local Area Network,LAN)是在一个局部的地理范围内(如一个学校、工厂和机关内),一般是方圆几千米以内,将各种计算机,外部设备和数据库等互相联接起来组成的计算机通信网。 局…

如何建立一个小型的局域网,来实现电脑与电脑之间的通信

小编给大家介绍两种简单的连接方法 方法一:通过网线直接建立一个有线局域网的步骤(此方法最好至少有一台电脑是Win7的操作系统) 第一步:用一根普通的网线把两台需要连接的电脑连接起来(如连接成功,可直接进…

公司局域网如何组建 公司局域网搭建方法

公司局域网如何组建 公司局域网搭建方法 本文章由注册用户丽丽小姐上传提供 版权声明我要发布反馈 阅读:91147次 我要评论 汇聚专业的企业网络组建知识,为消费者提供最权威的公司局域网设计方案,是消费者们了解公司局域网怎么建立的重要参…