Linux常用命令(15)—grepsed命令(有相关截图)

写在前面:

最近在学习Linux命令,记录一下学习Linux常用命令的过程,方便以后复习。仅供参考,若有不当的地方,恳请指正。如果对你有帮助,欢迎点赞,关注,收藏,评论,谢谢。

1. grep命令 用于查找文件里符合条件的字符串或正则表达式

1.1 基本语法

grep [options] pattern [files]

pattern - 表示要查找的字符串或正则表达式。

files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。

1.2  常用选项

-i:对应单词 "ignore"(忽略)。这个选项告诉 grep 在搜索时忽略大小写,即大小写不敏感。

意义:搜索时不会区分大写字母和小写字母,如 "error" 和 "Error" 会被视为相同。

-v:对应单词 "invert"(反转)。这个选项反转了 grep 的默认行为,即只打印不匹配指定模式的行。

意义:通常 grep 用来打印匹配的行,但 -v 选项使其打印不匹配的行。

-n:对应单词 "number"(数字或编号)。这个选项告诉 grep 在输出匹配行时,前面加上该行在文件中的行号。

意义:帮助用户快速定位到匹配内容在文件中的位置。

-r 或 -R:对应单词 "recursive"(递归)。这个选项告诉 grep 在目录及其子目录中递归地搜索文件。

意义:当需要在整个目录树中搜索文件时,可以使用这个选项。

-l:对应单词 "list"(列表)。这个选项告诉 grep 只打印包含匹配内容的文件名,而不是匹配的内容本身。

意义:当只关心哪些文件包含匹配内容时,可以使用这个选项。

-c:对应单词 "count"(计数)。这个选项告诉 grep 只打印匹配的行数,而不是匹配的内容本身。

意义:当只需要知道匹配内容的数量时,可以使用这个选项。

1.3  grep 111 1.txt 查找“111”,并打印匹配行

PS:grep  -n (number)111 1.txt 查找“111”,并打印匹配行和行号

1.4 grep -r -n 1 .(当前目录)在当前文件夹中递归查找所有文件中匹配正则表达式 "1" 的行,并打印匹配行所在的文件名和行号

1.5  echo "hello world" | grep -c world 在标准输入中查找字符串 "world",并只打印匹配的行数

grep 在输入字符串 "hello world" 中找到了 "world" 这个子字符串,因此 -c(count) 选项会使 grep 输出 1,表示找到了一个匹配项。

1.6  grep 2 *txt 在当前目录中,查找后缀有 txt字样的文件中包含 ‘2’字符串的文件,并打印出该字符串的行

1.7  grep -v  [0-9] *txt* 反向查找,查找不包含数字的文件,并打印匹配行

2. sed命令 利用脚本来处理文本文件

sed 可以被理解为 "stream editor" 的缩写,即流编辑器。

sed 可依照脚本的指令来处理、编辑文本文件。

sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

2.1 基本语法

sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数说明:

-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。

-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。

-h或--help 显示帮助。

-n或--quiet或--silent 仅显示script处理后的结果。

-V或--version 显示版本信息。

动作说明:

a:append(追加)

功能:在指定行之后追加新的文本。

示例:在文件的第一行后追加“Hello, World!”:sed '1a Hello, World!' filename

c:change(更改)

功能:替换指定行(或范围)的文本内容。

示例:将文件的第3行替换为“New line”:sed '3c New line' filename

d:delete(删除)

功能:删除指定的行。

示例:删除文件的第1行:sed '1d' filename

i:insert(插入)

功能:在指定行之前插入新的文本。

示例:在文件的第一行前插入“Start here”:sed '1i Start here' filename

p:print(打印)

功能:打印出指定的行。通常与 -n 选项一起使用,以仅打印出匹配的行。

示例:打印出文件的第二行:sed -n '2p' filename

s:substitute(替换)

功能:在文本中执行替换操作。可以搭配正则表达式进行复杂的替换。

示例:将文件中的“old”替换为“new”:

注意:s/old/new/g 中的 g 表示全局替换,即替换每一行中的所有匹配项。如果不加 g,则只替换每行中的第一个匹配项。

2.2 sed -e 4a\Newline testfile.txt 在 testfile.txt的第四行后添加一行,并将结果输出到标准输出

2.3  nl testfile.txt | sed '2,5d' 将 testfile.txt 的内容列出并且列印行号,同时,请将第 2~5 行删除

只删除某一行,如:nl testfile.txt | sed '9d' (只删除第9行)

删除某一行到最后一行,如:nl testfile.txt | sed '3,$d'(删除3-最后一行)

2.4 sed 's/Linux/LINUX/g' testfile.txt  将testfile.txt文件中的 "Linux" 替换成 "LINUX"

但是,我们可以看到它其实并没有修改原文件,如果我们想直接把修改的结果保留在原文件,应该怎么操作?

可以使用 -i(in-place)选项,将结果保留在原文件。

2.5 sed -i '/^$/d' 01.txt  从01.txt文件中删除所有空白行

相关解释:

'/^$/d': 这是一个 sed 表达式,用于指定一个操作。

^$: 这是一个正则表达式,用于匹配空行。^ 表示一行的开始,$ 表示一行的结束。当它们之间没有任何字符时,这个正则表达式就会匹配那些没有任何字符(即空)的行。

d: 这是一个 sed 命令,表示删除匹配到的行。

2.6 sed -i  '/*#/d;/^$/d' 01.txt  从01.txt文件中删除所有注释和空白行

2.7 echo 'esempio' | tr '[:lower:]' '[:upper:]' 将小写字母转换为大写字母

相关解释:

echo 'esempio':这个命令用于输出字符串 'esempio' 到标准输出(通常是终端)。

|:这是 Unix 和 Linux 中的管道符号,它用于将一个命令的输出作为另一个命令的输入。在这个例子中,echo 命令的输出(即字符串 'esempio')被传递给 tr 命令。

tr '[:lower:]' '[:upper:]':tr 命令用于替换或删除输入中的字符。在这里,它使用字符类 [:lower:] 和 [:upper:] 来指定要替换的字符范围。[:lower:] 匹配所有小写字母,[:upper:] 匹配所有大写字母。tr 命令将这些小写字母替换为对应的大写字母。

因此,整个命令 echo 'esempio' | tr '[:lower:]' '[:upper:]' 的输出将是 'ESEMPIO',即原始字符串 'esempio' 的大写形式。

扩展:

tr 对应于英文单词 "translate" 的缩写,表示“转换”或“翻译”。

2.8 sed -n '/22/p' 02.txt 查看只包含词汇 "22"的行

2.9 sed -e 's/ *$//' 02.txt 删除每一行最后的空白字符

当你从文件的每一行末尾删除空格或制表符时,这些更改在纯文本编辑器或命令行查看时可能并不明显,因为这些字符是“不可见的”。但是,这些字符的存在可能会在某些情况下产生问题,特别是在处理文本文件、脚本、配置文件或与其他系统交互时。

因此,使用 sed -e 's/ *$//' 02.txt 来删除行尾的空白字符可以确保文件更加干净、一致,并减少潜在的问题。即使这些更改在直接查看时可能不明显,但它们仍然是有益的。

2.10 sed -e 's/22//g' 02.txt 从文档中只删除词汇 "22" 并保留剩余全部

//: 替换字符串部分。在这里它是空的,意味着匹配到的内容(即 22)将被替换为空(即被删除)。

2.11 sed -n '1,5p;5q' 02.txt  查看从第一行到第5行内容

'1,5p;5q': 这是一个 sed 脚本,包含两个命令,用分号 ; 分隔。

1,5p: 这个命令告诉 sed 打印从第一行到第五行的内容。1,5 是一个地址范围,表示从第一行到第五行。p 是一个命令,用于打印当前模式空间的内容。由于我们使用了 -n 选项,因此这个 p 命令实际上是我们唯一看到模式空间内容的方式。

5q: 这个命令告诉 sed 在处理完第五行后退出。q 是一个命令,用于退出 sed。由于我们指定了地址 5,因此 sed 会在处理完第五行后立即退出,不再继续处理文件的其余部分。

2.12  sed -n '5p;5q' 02.txt   查看第5行

sed -n '5p;5q' 02.txt 和 sed -n '5p' 02.txt 的区别:   

1.两个命令都会打印出文件的第五行内容。

2.sed -n '5p' 02.txt 会继续处理文件的其余部分,但由于没有打印命令,所以你不会看到其他行的内容。

3.sed -n '5p;5q' 02.txt 会在打印第五行后立即退出,不再处理文件的其余部分。虽然结果相同,但这个命令有一个额外的退出步骤。

在大多数情况下,如果你只是想要打印文件的第五行,那么使用 sed -n '5p' 02.txt就足够了。但如果你想要确保在打印第五行后立即退出(例如,为了避免处理大文件时的额外开销),那么可以使用 sed -n '5p;5q' 02.txt。

2.13 sed -e 's/00*/0/g' 02.txt 用单个零替换多个零

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

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

相关文章

常见调试器介绍

目录 常见调试器 1.1 ST-Link 1.2 DAPLink 1.3 JLink 常见调试器 市面上有很多的调试器&#xff0c;下面是大家比较常见的一些调试器&#xff0c; 比如&#xff1a;ST-Link、DAPLink、JLink、Ulink等 1.1 ST-Link ST-Link是一种用于STM8及STM32系列单片机的调试器和下载…

在线预览多类型文件_全栈

目录 一、下载运行项目 二、项目功能 三、前端项目引用 四、文件预览样式更改 在做项目时经常用到在线预览文件&#xff0c;给大家介绍一个好用的在线预览文件项目。使用技术是后端Java&#xff0c;前端Freemarker模板。 FreeMarker 特别适应与 MVC 模式的 Web 应用&#x…

Python --- 如何修改Jupyter Notebook保存文件的路径?

如何修改Jupyter Notebook在本地保存文件的默认路径&#xff1f; 一直以来都比较喜欢jupter notebook&#xff0c;自从用了以后就爱上了。平时用的时候&#xff0c;因为大多都是临时调用&#xff0c;每次在界面里直接new一个新的file就开干。 曾经也想过我创建的这些python文件…

【arm扩容】新硬盘挂载操作说明

背景&#xff1a; 未经过扩容的arm设备不满足移植大镜像的条件。 需求&#xff1a; 我们要对arm设备扩容&#xff0c;现在要将一个500G的硬盘挂进去。而且要按照老arm设备的挂法&#xff0c;保持相同的目录结构。配置这台机器。 下面老arm设备的硬盘挂载相关信息。 lsblk …

SSRF(2)

Gopher协议的利用 gopher协议是ssrf利用中最强大的协议 gopher协议支持发出GET、POST请求&#xff1a; 可以先截获get请求包和post请求包&#xff0c;再构成符合gopher协议的请求。 默认端口为70,一般需发送到80端口 如果发起post请求&#xff0c;回车换行需要使用%0D%0A&…

消息队列-概述-JMS和AMQP

JMS和AMQP JMS是什么 JMS&#xff08;JAVA Message Service,java 消息服务&#xff09;是 Java 的消息服务&#xff0c;JMS 的客户端之间可以通过 JMS 服务进行异步的消息传输。JMS&#xff08;JAVA Message Service&#xff0c;Java 消息服务&#xff09;API 是一个消息服务…

1950 Springboot汽修技能点评系统idea开发mysql数据库APP应用java编程计算机网页源码maven项目

一、源码特点 springboot 汽修技能点评系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统 具有完整的源代码和数据库&…

提高开关电源效率一般做法

提高开关电源效率一般做法 开关电源的功耗包括由半导体开关、磁性元件和布线等的寄生电阻所产生的固定损耗以及进行开关操作时的开关损耗。对于固定损耗,由于它主要取决于元件自身的特性,因此需要通过元件技术的改进来予以抑制。在磁性元件方面,对于兼顾了集肤效应和…

Google Adsense----Wordpress插入谷歌广告

1.搭建个人博客,绑定谷歌search consol,注册adsense 详细可以参考这个视频b站视频 2.将个人博客网站关联到Adsense 在adsense里新加网站,输入你的博客网址,双击网站 将这段代码复制到header.php的里面 在wordpress仪表盘的外观-主题文件编辑器,找到header.php将代码复制,…

全网最全!25届最近5年上海理工大学自动化考研院校分析

上海理工大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试…

获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?

1.阿里规范 在阿里的Java开发手册中强制要求使用System.currentTimeMillis() 2.为什么(源码详解) new Date().getTime()它实际上也是调用的System.currentTimeMillis()&#xff0c;源码分析。 这个fastTime是它的成员变量&#xff0c;在new Date()的时候就被赋值了。 扩展一…

CentOS 7 安装部署Cassandra4.1.5

一、Cassandra的介绍 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发&#xff0c;用于储存收件箱等简单格式数据&#xff0c;集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源&#xff0c;此后&#xff0…

算法设计与分析:分治法求最近点对问题

目录 一、实验目的 二、实验内容 三、算法思想 四、实验步骤 1、蛮力法 2、分治法 2.1 先用快速排序SortX(A,1,n)将所有点按x坐标升序排序 2.2 点数n<3时直接计算&#xff0c;时间复杂度为O(1) 2.3 点数n>3时 五、实验结果和分析 一、实验目的 1. 掌握分治法思…

ArkUI部分案例笔记——padding,space

基础的构建 组件分类&#xff1a; 容器组件&#xff1a;像Column&#xff0c;Row这种组件就是容器组件一般就来控制行和列的就是容器组件 基础组件&#xff1a;Text(文本组件)&#xff0c;像这种用来有一定功能的就是基础组件 注意&#xff1a;一个build只能有一个根容器组件…

苹果智能和人工智能最大化

苹果智能和人工智能最大化 除了苹果公司&#xff0c;还没有人真正使用过苹果的智能功能。它要到秋天才会分阶段发布&#xff0c;即使到那时&#xff0c;它也无法在80%或90%的iPhone安装基础上运行&#xff0c;因为它需要只有iPhone 15 Pro才能使用的设备上处理功能。没有什么能…

海南聚广众达电子商务咨询有限公司抖音电商新标杆

在数字经济的浪潮中&#xff0c;抖音电商正成为一股不可忽视的力量。海南聚广众达电子商务咨询有限公司&#xff0c;作为专注于抖音电商服务的领军企业&#xff0c;凭借其专业的团队和创新的思维&#xff0c;不断助力商家在抖音平台上实现商业价值的最大化。 海南聚广众达电子…

Github上传大于100M的文件(ubuntu教程)

安装Git-lfs Git Large File Storage (LFS) 使用 Git 内部的文本指针替换音频样本、视频、数据集和图形等大文件&#xff0c;同时将文件内容存储在 GitHub.com 或 GitHub Enterprise 等远程服务器上。官网下载&#xff1a;https://git-lfs.github.com/ ./install.sh上传 比如…

基于SpringBoot+Vue大学生网络教学平台设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

LLC开关电源开发:第四节,LLC软件设计报告

LLC源代码链接 数控全桥LLC开发板软件设计报告  1. LLC硬件及软件框架2. LLC软件设计2.1 工程文件说明2.2 LLC中断设计2.2.1 20us中断2.2.2 5ms中断 2.3 LLC状态机设计2.3.1 初始化状态2.3.2 空闲状态2.3.3 软启动状态2.3.4 正常运行状态2.3.5 故障状态 2.4 环路设计2.4.1 环路…

机器学习课程复习——逻辑回归

1. 激活函数 Q:激活函数有哪些? SigmoidS型函数Tanh 双曲正切函数