文本三剑客之 awk

news2024/11/26 10:00:42

awk

Linux/UNIX 系统中,awk 是一个功能强大的编辑工具。逐行读取输入文本

以空格作为分割符,多个空格他会自动压缩成一个空格

AWK信息的读入也是逐行指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理.

1按照命令找指定的行  2.找到的行 打印,操作

awk 默认的方式就是打印  把结果给你输出到屏幕上

可以在无交互 的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务。

命令结构

awk ‘< pattern> <acion>’ <iuput-file>   #只能那个用单引号引起来

          操作符      怎么干     处理对象  

awk 的工作过程

1先看BEGIN{action)这个模块是读取操作,读文件的所有行,所有读取完毕,然后一次执行

2.END{bction)打印。输出结果,对前面的结果,条件判断,还可以用代码接着操作

awk的工作流程就是对行进行处理  然后区列

 工作原理

sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理

目录

awk的基本格式及其内置变量

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

-F  :|     加上指定分隔符

-v  变量赋值

注意一定是单引号:'模式或条件 {操作}

{ }外指定条件,{ }内指定操作。

内置变量

不能用双引号括起来,不然系统会把它当成字符串

内置变量

$0当前处理的行的整行内容  打印所有

$n

当前处理行的第n个字段(第n列)
NR当前处理的行的行号(序数)

NF

当前处理的行的字段个数。$NF代表最后一个字段
FS列分割符。指定每行文本的字段分隔符,输入内容的分隔符,

命令行操作

这是aed ' '  打印的方式

这是awk ‘{print}’  打应的方式 

 

 awk ‘1{peint}’ 2.txt  这两个是一个意思    加1和不加一

awk '{peint}' 2.txt

 $0 是全部打印

awk '{print $0}' 2.txt

先看这张图就好理解了  对没行的列进行处理  也就是切片

 

$0 是打印所有内容 后面加上2 3 4 就是打印他的列数

实战演练对 /etc/passwd 提取第1列和第4列

既有行号也有内容

awk '{print NE,$0}' /etc/passwd

 

awk 'NR==3{print}'  3.txt    指定打印出第三行的内容

 

 awk 'NR==3,NR==5{print}' test1.txt  ----打印3-5行的内容

这边要主要下冒号 逗号不要搞混 了

awk 'NR==3,NR==5{print}' 3.txt  ----打印3 4 5行的内容

awk 'NR==3;NR==5{print}' 3.txt  ----打印第3行和第5行

awk '(NR>=3)&&(NR<=5){print}' test1.txt -----正则的表达方式,打印3-5行的内容

奇偶行打印

awk 'NR%2==0{print}' test1.txt #打印偶数行

 awk 'NR%2==1{print}' test1.txt #打印奇数行

 awk运算:

 getline

 getline的工作过程

1、当getline左右无重定向符号(“<”,">")或者管道符号(“|”)时,

打印偶数行

awk '{getline;print $0}' test1.txt #相当于打印了偶数行

 

 getline作用

getline没有重定向  没有管道符就是打印奇偶行 

awk '{print $0;getline}' test1.txt #相当于打印了奇数行

2、当getline左右有管道符号或重定向符时 

作用:就是从指定文件获取内容>输出到新的文件里  $0代表全量  也就是全部的意思

 awk '{getline < "1.txt"; print $0 > "ky30.txt";}' 3.txt #使用重定向把1.txt输出给ky30

 第一个:getline是awk的一个内置函数

 第二个:没有重定向和管道符,就是奇偶行

第三个: 重定向,就从指定文件获取内容,|,赋值变量

文件内容匹配过滤打印

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

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

相关文章

用户档案PDF报表

用户档案PDF报表 理解数据填充的两种方式熟练构造分组报表 熟练构造Chart图形报表实现个人档案的PDF输出 数据填充 我们介绍了如何使用JasperReport来生成简单的文本报表&#xff0c;正式企业开发中动态数据展示也是报表中最重要的一 环&#xff0c;接下来我们共同研究的就是填…

FastCorrect:语音识别快速纠错模型丨RTC Dev Meetup

前言 「语音处理」是实时互动领域中非常重要的一个场景&#xff0c;在声网发起的「RTC Dev Meetup丨语音处理在实时互动领域的技术实践和应用」活动中&#xff0c;来自百度、寰宇科技和依图的技术专家&#xff0c;围绕该话题进行了相关分享。 本文基于微软亚洲研究院主管研究…

chatgpt赋能python:Python应用图标的SEO优化策略

Python应用图标的SEO优化策略 作为一门跨平台解释型编程语言&#xff0c;Python已经成为越来越多企业和开发者的首选语言之一。在Python应用的推广过程中&#xff0c;图标的设计和SEO优化也变得越来越重要。在本文中&#xff0c;我们将探讨Python应用图标的SEO优化策略&#x…

CCE集群切换OBS共享存储方案

目录 一、背景 二、创建PVC 三、同步nfs数据到OBS 四、变更无状态负载数据储存为OBS 五、卸载弹性文件服务SFS&#xff08;nfs&#xff09; 一、背景 生产环境CEE集群&#xff0c;每个K8s节点挂载同一个华为云弹性文件服务SFS(可以简单的理解为nfs)。无状态应用通过hostPath…

chatgpt赋能python:Python就业岗位:行业热门,前景广阔

Python 就业岗位&#xff1a;行业热门&#xff0c;前景广阔 作为其中一门最受欢迎的编程语言&#xff0c;Python 经常出现在各个行业的招聘需求中。无论是大企业、初创公司&#xff0c;还是政府机构和非营利组织&#xff0c;都需要 Python 专业人士来应对日益增长的数据和技术…

chatgpt赋能python:Python库使用指南

Python库使用指南 Python是一种高级编程语言&#xff0c;拥有丰富而强大的标准库和第三方库。在本文中&#xff0c;将介绍一些主要Python库的使用方法以及如何通过使用它们来提高SEO。 Requests库 Requests是一个流行的第三方库&#xff0c;用于HTTP请求和响应。可以使用它来…

【内网安全-隧道搭建】内网穿透_Spp上线(全双工通信)

目录 Spp&#xff08;特殊协议上线&#xff09; 1、简述&#xff1a; 2、用法&#xff1a; 1、准备 2、服务器 3、客户机 4、cs、msf Spp&#xff08;特殊协议上线&#xff09; 1、简述&#xff1a; 1&#xff09;支持的协议&#xff1a;tcp、udp、rudp&#xff08;可靠…

基于动力学模型的无人驾驶车辆MPC轨迹跟踪算法及carsim+matlab联合仿真学习笔记

目录 1 模型推导及算法分析 1.1 模型推导 1.1.1 车辆动力学模型 1.1.2 线性时变预测模型推导 1.2 模型预测控制器设计 1.2.1 目标函数设计 1.2.2 约束设计 2 代码解析 2.1 模板框架 2.1.1 S-Function 2.1.2 mdlInitializeSizes函数 2.1.3 mdlUpdates()函数 2.1.4 …

机器学习中的数学原理——分类的正则化

通过这篇博客&#xff0c;你将清晰的明白什么是分类的正则化。这个专栏名为白话机器学习中数学学习笔记&#xff0c;主要是用来分享一下我在 机器学习中的学习笔记及一些感悟&#xff0c;也希望对你的学习有帮助哦&#xff01;感兴趣的小伙伴欢迎私信或者评论区留言&#xff01…

Go异步任务解决方案 Asynq

今天为大家介绍一个Go处理异步任务的解决方案&#xff1a;Asynq&#xff0c;是一个 Go 库&#xff0c;用于排队任务并与 worker 异步处理它们。它由Redis提供支持&#xff0c;旨在实现可扩展且易于上手。 一、概述 Asynq 是一个 Go 库&#xff0c;用于对任务进行排队并与工作人…

Python爬虫学习-简单爬取网页数据

疫情宅家无事&#xff0c;就随便写一些随笔吧QwQ… 这是一篇介绍如何用Python实现简单爬取网页数据并导入MySQL中的数据库的文章。主要用到BeautifulSoup requests 和 pymysql。 以网页https://jbk.39.net/mxyy/jbzs/为例&#xff0c;假设我们要爬取的部分数据如下图所示&#…

【板栗糖GIS】——如何下载哔哩哔哩的视频CC字幕为不带时间节点的纯文字

【板栗糖GIS】——如何下载哔哩哔哩的视频CC字幕为不带时间节点的纯文字 目录 1. 打开edge浏览器或谷歌浏览器 2. 安装油猴插件 3. 安装字幕插件 4. 打开哔哩哔哩视频播放页面&#xff0c;点击字幕 首先在想要下载之前需要先判定视频是否有云字幕&#xff0c;如果有才可以…

xxl-job详解

什么是xxl-job&#xff1f; ​ xxl-job是一个分布式的任务调度平台&#xff0c;其核心设计目标是&#xff1a;学习简单、开发迅速、轻量级、易扩展&#xff0c;现在已经开放源代码并接入多家公司的线上产品线&#xff0c;开箱即用。xxl是xxl-job的开发者大众点评的许雪里名称的…

SpringBoot+vue 实现监控视频rtsp播放(java+Nginx+ffmpeg+flv.js)

其实原理就是: 将监控通过FFMPEG,推送给Nginx,前端通过Nginx地址拉取视频&#xff0c;就可以播放了。 1:安装FFMPEG. 2:下载并且配置nginx. 3:使用java代码实现调用cmd或者linux窗口,并且运行操作FFMPEG的命令&#xff0c;进行监控视频rtsp格式的推送&#xff0c;推送给nginx. …

模板方法设计模式的学习和使用

1、模板方法设计模式的学习 当涉及到一系列具有相似行为的算法或操作时,模板方法设计模式是一种有效的设计模式。它允许你定义一个算法的骨架,同时将某些步骤的实现细节交给子类来实现。   模板方法模式基于以下两个核心原则&#xff1a; 抽象类定义模板方法骨架&#xff1a…

chatgpt赋能python:Python将一张图片分割成多张:从理论到实践

Python将一张图片分割成多张&#xff1a;从理论到实践 简介 随着Internet的爆炸式增长&#xff0c;图片已经成为了我们生活中不可或缺的一部分。具有高质量、高清晰度的图片可以提升网站的美观程度&#xff0c;帮助网站吸引更多的用户。但是&#xff0c;有时候大型的图片并不…

chatgpt赋能python:Python并不是一门简单的编程语言

Python 并不是一门简单的编程语言 Python 是一门直观且易学的编程语言&#xff0c;这一点没有错&#xff0c;但是要说它是简单的&#xff0c;那其实是不准确的。Python 有着广泛的应用领域&#xff0c;包括人工智能、大数据分析、Web开发、自动化测试等。尽管初学者可以迅速上…

MySQL中BETWEEN AND(范围查询)

0 写在前面 MySQL 提供了 BETWEEN AND 关键字&#xff0c;用来判断字段的数值是否在指定范围内。 BETWEEN AND 需要两个参数&#xff0c;即范围的起始值和终止值。如果字段值在指定的范围内&#xff0c;则这些记录被返回。如果不在指定范围内&#xff0c;则不会被返回。 最近…

JS 装饰器

JS 装饰器 JavaScript 装饰器是一种以 符号开头的特殊语法&#xff0c;放在目标代码的前面用于包装或扩展代码功能。JavaScript 的装饰器语法目前仍处于提案阶段&#xff0c;现阶段使用的话需要通过 bable 等方式进行编译之后&#xff0c;才能在浏览器正常运行。装饰器分为两…

chatgpt赋能python:Python将空值替换成0

Python 将空值替换成 0 在数据分析和处理过程中&#xff0c;清洗数据往往是非常重要的一个环节。而在清洗数据过程中&#xff0c;经常会遇到空值&#xff08;Missing Values&#xff09;的问题。空值是指在数据集中出现的缺失值&#xff0c;它可能是由于数据输入错误、数据采集…