文本处理三剑客grep,awk,sed-读书笔记(十四)

文本处理三剑客{

1.内容过滤器 => grep

2.文本分析器 => awk

3.行文本处理器 => sed

}

grep内容过滤器

grep命令是Linux系统中一个非常强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep命令的基本语法如下:

grep [选项] PATTERN [文件名]

其中,PATTERN表示要搜索的模式,可以是字符串、正则表达式或者单个字符;文件名是要搜索的文件,如果不指定文件名,则从标准输入读取数据。

grep命令的主要选项有:

  • -i:忽略大小写
  • -v:显示不包含匹配文本的所有行(反向匹配)
  • -n:显示匹配行的行号
  • -c:显示匹配行的数量
  • -l:显示包含匹配行的文件名
  • -r:递归搜索子目录中的文件
  • -E:将模式视为扩展正则表达式
  • -F:将模式视为固定字符串,而非正则表达式
  • -w:匹配整个单词,而非字符串的一部分
  • -A num:显示匹配行及其后num行
  • -B num:显示匹配行及其前num行
  • -C num:显示匹配行及其前后各num行

例子1:在文件file.txt中查找包含"hello"的行

grep "hello" file.txt

例子2:在文件file.txt中查找包含"hello"或"world"的行,忽略大小写

grep -i "hello\|world" file.txt

awk文本分析器

awk是一种在Linux系统中处理文本文件的语言,被誉为文本分析工具中的“三剑客之首”,其它两把剑分别是grep和sed。它逐行读取文本,并以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并根据模式或者条件执行编辑命令。

awk的基本语法格式是 awk 'pattern {action}' filename,其中pattern表示AWK在数据中查找的内容,而action是找到匹配内容时所要执行的一系列命令。

例如,我们有一个名为students.txt的文件,内容如下:

Tom 85 90 92 Jerry 88 92 96 Alice 78 80 85

如果我们想要计算每个学生的平均分,可以使用以下命令:

awk '{sum=($1+$2+$3)/3; print $0, sum}' students.txt

这条命令首先通过{sum=($1+$2+$3)/3;}计算每个学生的总分数,然后通过print $0, sum打印每行和总分。

另一个例子,如果我们想要查看一个文件的行数,可以使用以下命令:

awk 'END { print NR }' example.txt

这个命令通过内置变量NR(记录数)来调用相关信息,打印出文件的行数。

这条Linux命令使用了两个常用的文本处理工具:cat 和 awk。下面是命令的详细解释:

  1. cat test.txt

:cat 是 "concatenate" 的缩写,通常用于显示文件内容。这里它将 test.txt 文件的内容输出到标准输出(通常是你的终端屏幕)。

  1. |

:这个符号是管道操作符,它允许你将前一个命令的输出作为下一个命令的输入。

  1. awk '/^name/{name=$0; next;}{print name "-" $0}'

:awk 是一个强大的文本处理工具,能够执行复杂的文本操作。这个 awk 命令做了以下几件事:

综上所述,这条命令的作用是:从 test.txt 文件中找到以 "name" 开头的行,将其内容存储在一个变量中,并为该文件中的每一行打印出这个变量的内容,后面跟着一个短横线和当前行的内容。如果文件中有多个以 "name" 开头的行,只有第一次出现的 "name" 行的内容会被使用。

例如,如果 test.txt 文件的内容是:

name John Doe age 30 location New York

运行这条命令后,输出将是:

name John Doe - age 30 name John Doe - location New York

这样,无论文件中有多少行,以 "name" 开头的那一行的内容都会被重复打印,直到遇到文件的末尾。

sed行文本处理器

sed 是一个流编辑器,用于对文本数据进行处理。它一次读取一行输入,然后根据指定的指令对这行数据进行处理,并将结果输出。sed 命令非常适合用于自动化文本处理任务,如查找、替换、删除文本行等。

基本语法:

sed [选项]... [指令]...

主要参数:

  • -n 或 --quiet 或 --silent:仅打印 sed 指令处理后的行,不打印模式空间的内容。
  • -e:添加一个指令到命令的列表中。
  • -f:从文件中读取 sed 指令。
  • -i:直接修改文件,而不是输出到标准输出。

常用指令:

  • s:替换指令,格式为 s/regexp/replacement/flags。
    • regexp:正则表达式,用于匹配要替换的文本。
    • replacement:用于替换匹配到的文本的字符串。
    • flags:可选标志,如 g 表示全局替换。

示例:

  1. 替换文本中的字符串

假设我们有一个文本文件 example.txt,内容如下:

hello world hello universe hello galaxy

使用 sed 将所有的 "hello" 替换为 "hi":

sed 's/hello/hi/' example.txt

输出:

hi world hi universe hi galaxy

如果要直接修改文件,可以使用 -i 选项:

sed -i 's/hello/hi/' example.txt

  1. 删除匹配的行:

继续以 example.txt 为例,如果要删除所有包含 "universe" 的行:

sed '/universe/d' example.txt

输出:

hi world hi galaxy

同样,使用 -i 选项可以直接修改文件:

sed -i '/universe/d' example.txt

请注意,sed 的功能非常强大,这里只是介绍了一些基本的用法。根据具体的需求,sed 可以执行更复杂的文本处理任务。

g代表将所有的warning替换为Warning,如果不加g的话就是将每一行的第一个warning替换为Warning

如果不加 -i 参数 就不会对源文件进行修改文本只是进行终端的输出

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二百三十六、Kettle——修改MySQL中历史数据为当前系统日期同步到MySQL另一张表中并且每日数据逐渐减少

一、目的 由于一些雷达死了但是又需要有数据进行展示,于是就把这些雷达的历史数据,修改日期为当前日期后,同步到MySQL另一张表中,并且每日每台雷达的数据逐渐减少,等同于人为创建数据问题 二、实施步骤 (…

LOTO示波器软件PC缓存(波形录制与回放)功能

当打开PC缓存功能后, 软件将采用先进先出的原则排队对示波器采集的每一帧数据, 进行帧缓存。 当发现屏幕中有感兴趣的波形掠过时, 鼠标点击软件的(暂停)按钮, 可以选择回看某一帧的波形。一帧数据的量 是 当前用户选择时基档位缓冲区总数据大小。不同时基档位缓冲区大小不同&am…

极狐GitLab 容器镜像安全扫描实践【下】

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署…

element-plus的ElNotification 内容换行显示

效果图&#xff1a; 代码&#xff1a; const excelSuccess ({ data, status, message }) > {if (status 20005) {const msg message.replace(/\,/g, "<br />");//把,替换成换行符<br />ElNotification({dangerouslyUseHTMLString: true,//加此属性…

YOLOv9全网最新改进系列::YOLOv9完美融合双卷积核(DualConv)来构建轻量级深度神经网络,目标检测模型有效涨点神器!!!

YOLOv9全网最新改进系列&#xff1a;&#xff1a;YOLOv9完美融合双卷积核&#xff08;DualConv&#xff09;来构建轻量级深度神经网络,目标检测模型有效涨点神器&#xff01;&#xff01;&#xff01; YOLOv9原文链接戳这里&#xff0c;原文全文翻译请关注B站Ai学术叫叫首er …

品牌设计理念和logo设计方法

一 品牌设计的目的 设计是为了传播&#xff0c;让传播速度更快&#xff0c;传播效率更高&#xff0c;减少宣传成本 二 什么是好的品牌设计 好的设计是为了让消费者更容易看懂、记住的设计&#xff0c; 从而辅助传播&#xff0c; 即 看得懂、记得住。 1 看得懂 就是让别人看懂…

数字人实训室助推元宇宙人才培养

如今&#xff0c;全身动作捕捉设备已经大量应用在影视、动画、游戏领域&#xff0c;在热门的元宇宙内容领域中&#xff0c;全身动作捕捉设备逐步发挥着重要的作用&#xff0c;在包括体育训练、数字娱乐虚拟偶像、虚拟主持人、非物质文化遗产保护等等场景&#xff0c;数字人实训…

【stm32HAL库】ADC多通道DMA采集

一、介绍一下HAL库函数 1.ADC 2.DMA 二、实验思路 1.根据数据手册直到PC1&#xff0c;PA2&#xff0c;PA3分别为ADC123的通道11&#xff0c;2&#xff0c;3&#xff0c;我们就用这三个通道来采集&#xff0c;每一个通道采集 50 次&#xff0c;即一共需要DMA传输150个数据 2.由…

镊子蜡烛如何抓住反转进行交易?昂首资本2步抓住反转

很多投资者通过之前的文章知道镊子烛台图&#xff0c;甚至可以通过镊子烛台图有多倍收益&#xff0c;但是很多投资者又迷惑了&#xff0c;为什么我没有通过镊子烛台图获得收益&#xff0c;甚至有时还会亏损收手。其实事情很容易理解&#xff0c;Anzo Capital昂首资本认为那是因…

【光线重塑技术】小姐姐,美得不可方物——lllyasviel/ic-light

在英伟达自18年宣布光追技术之后&#xff0c;RTX显卡也成了目前Steam游戏的常客。就连 AMD、Intel 和 Apple Silicon 都宣布要在GPU上支持光追算法。这次我要介绍的是huggingface上比较火的relight技术—— ic-light 介绍 IC-Light 是一个操纵图像照明的项目。 IC-Light &qu…

C语言 | Leetcode C语言题解之第80题删除有序数组中的重复项II

题目&#xff1a; 题解&#xff1a; int removeDuplicates(int* nums, int numsSize) {if (numsSize < 2) {return numsSize;}int slow 2, fast 2;while (fast < numsSize) {if (nums[slow - 2] ! nums[fast]) {nums[slow] nums[fast];slow;}fast;}return slow; }

双碳目标下基于“遥感+”集成技术的碳储量、碳排放、碳循环、温室气体等多领域监测与模拟

原文链接&#xff1a;双碳目标下基于“遥感”集成技术的碳储量、碳排放、碳循环、温室气体等多领域监测与模拟https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247604166&idx1&sn5f49d952a0c05ff50582ab2f60e2f371&chksmfa821621cdf59f377b8aeb3084289ac…

YOLO使用笔记

下载oss命令工具。 在OSS.exe文件下打开Power Shell, 输入指令&#xff1a; ./oss login之后输入用户名和密码。 选择将你想要上传的文件导入&#xff1a; ./oss cp {yourdir} oss://进入服务器实例中&#xff0c;打开终端下载数据 同样输入:oss login 进行登录。 登录成功…

嵌入式开发场景下怎么防止源代码泄密

在当今数字化时代&#xff0c;嵌入式系统在各行各业中扮演着至关重要的角色&#xff0c;从智能家居到工业自动化&#xff0c;都离不开这些嵌入式设备的支持。然而&#xff0c;随之而来的是对嵌入式代码安全的日益关注。在嵌入式开发场景下&#xff0c;代码的保护至关重要&#…

MATLAB | 最新版MATLAB绘图速查表来啦!!

之前看大佬Pjer做的MATLAB速查表 http://home.ustc.edu.cn/~pjer1316/matlabplot/ 感觉非常的实用&#xff0c;最近几次MATLAB更新围绕画图方面也有很多新东西&#xff0c;于是就有了自己做一张最新版的速查表的想法&#xff0c;这张表长这样&#xff1a; 这张表的配色基本上…

TCP协议建立连接的过程及其意义

目录 三次握手 四次挥手 三次握手的意义 在客户端与服务器传输数据之前&#xff0c;要在两台主机之间先建立连接&#xff0c;然后再传输业务数据。三次握手&#xff0c;就是建立连接的过程&#xff0c;是在传输业务之前&#xff0c;就要先进行。握手好了&#xff0c;才能进行…

(四十一)第 6 章 树和二叉树(包含双亲的树的孩子链表存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…

使用rsync同步服务器目录及文件遇到的问题

背景&#xff1a;某天&#xff0c;客户找我倾诉了一个需求&#xff0c;问我是否有方法解决。诉求如下&#xff1a;有一个生产服务器&#xff08;我暂时把它称为主站服务器&#xff09;&#xff0c;还有一个专门用来备份主站服务器上目录和文件的服务器&#xff08;我姑且把它称…

SD-WAN异地组网的优点和应用场景

随着企业不断扩张&#xff0c;建立多个分支机构&#xff0c;异地组网已经成为提高通信效率和资源配置的关键手段。SD-WAN技术的出现为企业带来了更经济实惠、更有优势的异地组网解决方案。那么&#xff0c;如何搭建SD-WAN异地组网呢&#xff1f;我们一起来看看吧&#xff01; S…

免翻,这两款免费神器结合,游戏党的狂欢!

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 相信大家都听过Steam&#xff0c;这是一款全球知名的PC端游戏平台&#xff0c;像大家耳熟能详的绝地求生、永劫无间等大热PC端游戏都可以从中下载&#xff0c;当然&#xff0c;还有众多…