Linux---awk

news2025/1/31 8:09:17

Linux三剑客之一awk

简单介绍一下awk的用法

再谈三剑客

grep awk sed 三个并称Linux的三剑客
awk:适合编辑,处理匹配到的文本内容
grep:擅长单纯的查找或匹配文本内容
链接: Linux—grep
sed:适合格式化文本内容,对文本进行复杂处理
链接: Linux—sed


文章目录

  • Linux三剑客之一awk
      • 再谈三剑客
  • awk
  • 语法
  • 用法
    • 内置变量
    • 自定义输出
    • awk参数
    • print打印格式
    • 模式pattern
      • BEGIN模式
      • END模式
      • 关系运算符模式
    • 自定义内置变量
    • 正则表达式
      • 语法


awk

awk有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式。
awk早期在unix上实现,用的是gawk,是GUN awk的意思。
awk更是一门编程语言,支持条件判断,数组,循环等功能。


语法

awk  [option] 'pattern[action]' file

options awk可选参数
pattern 模式
action 动作(awk擅长文本格式化,且输出格式化后的结果,因此最常用的动作就是print和printf)
file 处理文件

用法

这里用到的 文件为 123.txt
在这里插入图片描述

对awk而言,变量分为
内置变量
自定义变量

内置变量

变量含义
$n指定分隔符后,当前记录的第n个字段
$0完整的输入记录
FS字段分隔符,默认是空格
NF当前记录数,行数
NRman wak

更多内置变量可以man手册查看--------man awk
在这里插入图片描述

awk '{print $2}' 123.txt//取出第二列
$0 代表一整行  =awk '{print}' 123.txt
$1 代表第一列
······
这里执行的命令没有使用参数和模式,$2表示输出文本的第二列信息
awk默认以空格为分隔符,且多个空格也识别为一个空格,作为分隔符
awk是按行处理文件,一行处理完毕,处理下一行,根据用户指定的分隔符去工作,没有指定则默认空格

在这里插入图片描述

awk '{print $1,$3}' 123.txt//,代表空格 显示第一行,第三行

在这里插入图片描述

自定义输出

awk '{print "list1: "$1,"list2: "$3}' 123.txt //按要求输出第一行,第三行
awk 必须 外层单引号,内层双引号
内置变量$1,$2都不能添加双引号,否则会识别为文本

在这里插入图片描述

awk 'NR==5{print $0}' 123.txt//显示文件第五行
awk 'NR==5,NR==6{print $0}' 123.txt//显示文件第五行,第六行

在这里插入图片描述

awk '{print NR,$0}' 123.txt//显示每一行的行号和cat -n的操作一样

在这里插入图片描述

awk 'NR==37,NR==40{print NR,$0}' pwd.txt//37-40行的行号和信息显示出来

在这里插入图片描述

awk '{print $1, NF-1}' 123.txt//打印到数第二列

在这里插入图片描述

awk参数

参数含义
-F指定分隔字段符
-v定义或修改一个awk内部变量
-f从脚本文件中读取awk命令

awk默认以空格为分隔符,这里可以指定分隔符

awk -F ":" '{print $1}' pwd.txt //指定 :为分隔符打印第一列

在这里插入图片描述

除了使用-F选项,还可以使用变量的形式,指定分隔符,使用-v搭配选项,修改FS变量
awk -v FS=“:” ‘{print 1 , 1, 1,NF}’ pwd.txt

在这里插入图片描述

awk -F ":" -v OFS="===" '{print $1,$NF}' pwd.txt  //以:分隔,输出时添加===

在这里插入图片描述

print打印格式

print打印会自动换行

在这里插入图片描述

printf打印不会自动换行

在这里插入图片描述

若想要效果一样则需要格式化字符串
awk ‘{printf “%s\n”,$2}’ abc.txt

在这里插入图片描述

模式pattern

awk默认是按行处理文本,如果不指定任何模式(条件),awk默认一行行处理
如果指定了模式,只有符合模式才会被处理

BEGIN模式

处理文本之前做的动作

awk 'BEGIN{print "文件夹里有"}{print $2}' abc.txt  

在这里插入图片描述

END模式

处理完所有行之后执行的操作

awk 'BEGIN{print "处理文本之前"}{print $2}END{print "处理文本之后执行该语句"}' abc.t

在这里插入图片描述

关系运算符模式

在这里插入图片描述

awk 'NR==2{print $0}' abc.txt //输出第二行
awk 'NR!=2{print $0}' abc.txt/输出第二行以外的行

在这里插入图片描述

自定义内置变量

awk -F":" 'BEGIN{printf "%-30s%-30s%-30s\t%-30s\t\n","用户名","用户ID","用户家目录","用户解释器"}{printf "%-30s\t%-30s\t%-30s\t%-30s\t\n",$1,$3,$6,$7}' pwd.txt

在这里插入图片描述

正则表达式

正则表达式主要与awk的pattern模式结合使用

语法

awk '/正则表达式/动作' file

与 grep ‘正则表达式’ pwd.txt效果一致
但是awk配合pattern模式使用更为好用

awk '/^games/{print $0}' pwd.txt//找出pwd.txt文件中的games行

在这里插入图片描述

awk -F ":" '/^games/{print $1,$NF}' pwd.txt  //以:为分隔符找出pwd.txt文件中gams的第一列和最后一列

在这里插入图片描述

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

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

相关文章

如何选择合适的香港物理服务器?

所有企业在部署自己的网络业务时,要有目标,正确的技术,尤其是服务器,可以帮助他们实现这些目标。比如,国内站长开展大型外贸业务又想要国内访问速度快,可以选择合适的香港物理服务器来解决这个问题。那么&a…

天舟系列货运飞船介绍

天舟系列货运飞船是由中国空间技术研究院研制的一款货运飞船,其主要任务是在我国空间站建造及运营期间进行物资运输补给。 天舟系列货运飞船主要用于对中国空间站在轨运行期间,。天舟系列货运飞船包括天舟一号、天舟二号、天舟三号、天舟四号、天舟五号等…

Chatbot(五)

一、走进聊天机器人 目标 知道常见的bot的分类知道企业中常见的流程和方法 1.1 目前企业中的常见的聊天机器人 QA BOT (问答机器人) : 回答问题 1.代表:智能名服 2.比如: 提问和回答TASK BOT(任务机器人): 助人们做事情 1.代表: siri 2.比如:设五明天早上9点的闹钟CHAT BOT…

虹科方案|HK-ATTO 和西部数据为性能要求苛刻的应用构建存储解决方案

解决方案特点 科学、医疗、工程和其他高性能环境需要同样高性能的存储。该解决方案必须存储大量数据。它还必须提供突破当今固态驱动器设备极限的速度。同时,组织需要一个软件定义的组件,使他们能够构建满足其技术和预算要求的完整存储基础架构。 昂贵的…

[附源码]Python计算机毕业设计Django动漫电影网站

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

初学者学习JS很吃力怎么办?到底该如何学习JS?

前言 觉得吃力是很正常的,首先这证明你在某些知识点上没有理解透彻,JS挺多的知识点点其实是比较抽象的,比如闭包、原型和原型链等,其次便是不会变通运用,这主要是敲代码熟练度的问题,所以我针对你这种情况…

PCA主成分分析法浅理解

ML课刚学,发现更多是对线性代数的回顾。更进一步说,统计机器学习方法就是以高数、线代和概率论为基石构筑的“一栋大厦”。下面主要沿着老师ppt的思路讲讲对PCA方法的个人理解。 这里u1Tx(i)u_1^Tx^{(i)}u1T​x(i)是x(i)x^{(i)}x(i)在单位方向向量u1u_1u…

webpack常用配置(二)之拆分配置

在《webpack常用配置(一)》里面是把关于webpack的配置放在了根目录下的webpack.config.js中,但是我们知道在开发环境下和在真正打包上线运行的环境是不一样的,所有我们需要把对webpack的配置拆分成 1.通用配置:webpack…

8.跨域请求

目录 1 一些概念 1.1 同源 1.2 同源策略 1.3 跨域 2 JSONP 2.1 原理 2.2 jQuery中的JSONP 2.2.1 默认情况 2.2.2 自定义键与函数名称 2.2.3 淘宝搜索建议请求 1 一些概念 1.1 同源 两个页面的 协议,域名与端口都相同,则两个页面…

[附源码]Python计算机毕业设计Django高校实验室仪器设备管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

大数据(9h)FlinkSQL双流JOIN

文章目录1、环境2、Temporal Joins2.1、基于处理时间(重点)2.1.1、设置状态保留时间2.2、基于事件时间3、Lookup Join(重点)4、Interval Joins(基于间隔JOIN)重点是Lookup Join和Processing Time Temporal …

【Ubuntu】修改ubuntu和windows双系统启动顺序

目录一、问题描述二、背景知识1. GRUB是什么2. GRUB配置文件3./etc/default/grub 主配置文件二、问题分析三、解决方案1. 修改grub主配置文件2. 更新grub配置文件一、问题描述 UbuntuWindows双系统默认使用GRUB作为引导管理器,而且通常默认启动Ubuntu。这样过于死板…

用Python分析了30000+《独行月球》影评数据,看看观众们怎么说~

文章目录🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 数据大小2.3 查看索引、数据类型和内存信息🏳️‍🌈 3. Pyecharts数据可视化3.1 《独行月球》评分分布-13.2 《独行月球》评分分布…

TypeScript学习笔记

TypeScript学习笔记 TypeScript 与 JavaScript 的区别 TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法。TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。TypeScript 文件的后缀名 .ts (.ts&am…

Milvus的索引方式

索引方式: FLAT:准确率高, 适合数据量小 暴力求解相似。 IVF-FLAT:量化操作, 准确率和速度的平衡 IVF:inverted file 先对空间的点进行聚类,查询时先比较聚类中心距离,再找到最近的N个点。 IV…

redis5.0集群搭建(两台服务器)

文章目录1. 前言2. 配置两台机器内网互联3. redis安装4. redis集群5.0之前和5.0之后版本的区别4.1 redis5.0之前的版本创建集群4.2 redis5.0之后的版本创建集群4.3 redis5.0之前的版本需要依赖ruby环境5. redis5.0集群搭建5.1 创建redis-cluster目录5.2 将之前的redis.conf拷贝…

windbg使用教程

下载 https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools 安装,打开exe 我选择了下载 打开X64 Debuggers And Tools-x64_en-us.msi 要安装对应系统位数 不然打不开 安装完成后没有反应。还以为我弄错了呢&#…

【学习笔记】深度学习入门:基于Python的理论与实现-神经网络的学习

CONTENTS四、神经网络的学习4.1 从数据中学习4.2 Loss function4.3 数值微分4.4 梯度4.5 学习算法的实现四、神经网络的学习 4.1 从数据中学习 神经网络的特征就是可以从数据中学习。所谓“从数据中学习”,是指可以由数据自动决定权重参数的值。利用特征量和机器学…

HBase 开发:使用Java操作HBase 第1关:创建表

为了完成本关任务,你需要掌握:1.如何使用Java连接HBase数据库,2.如何使用Java代码在HBase中创建表。 如何使用Java连接HBase数据库 Java连接HBase需要两个类: HBaseConfigurationConnectionFactoryHBaseConfiguration 要连接HBase…

SPARKSQL3.0-Spark兼容多版本Hive源码分析

一、前言 阅读本节需要先掌握Catalog基础知识 Spark对Hive的所有操作都是通过获取Hive元数据[metastore]帮助spark构建表信息从而调用HDFS-API对原始数据的操作,可以说Spark兼容多版本Hive就是在兼容Hive的Metastore 二、源码分析 在catalog一节中我们知道spark…