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

news2024/11/25 0:59:27

写在前面:

最近在学习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.coloradmin.cn/o/1852676.html

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

相关文章

【2024.6.23】今日 IT 速递 | 亚布力创新年会热点新闻盘点

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

细胞核的分割与分类模型·hover net| 补充文档

小罗碎碎念 这期推文算是hover net系列的一个补充文档&#xff0c;把几个非常重要的脚本拿出来单独做了一个分析&#xff0c;感兴趣的自取。 extract_patches.pyconfig.pydataset.pyopt.pyrun_infer.py 一、extract_patches.py 1-1&#xff1a;加载和处理图像数据集 注意 da…

53【场景作图】纵深感

1 想清楚什么是前 什么是后 如果背景虚化,就不要处理地很平面,如果很平面,就留一个清晰的边缘 2 重叠 遮挡 被遮挡的物体会更远

如何让表格标题栏具有粘性?

让表格标题栏具有粘性 什么意思呢&#xff1f; 就是当表格的内容&#xff08;行数&#xff09;比较多的时候&#xff0c; 滚动屏幕&#xff0c;看下面的内容的时候&#xff0c; 表格标题栏可以一直显示在屏幕最上方&#xff0c; 以前呢&#xff0c; 我会通过JSCSS 的 pos…

开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全量压缩图片

今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具 一、开发背景&#xff1a; 业务需要将一个pdf文件展示在前端显示&#xff0c;但是基于各种原因&#xff0c;放弃了h5使用插件展示 原因有多个&#xff0c;文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果…

基于nsight_compute进行kernel性能分析

当利用nsight进行性能分析时&#xff0c;当涉及到内核级别的性能分析时&#xff0c;nvidia提供了系统级别(nsight system)&#xff0c;和内核级别的性能分析工具&#xff08;nsight compute&#xff09;。 其中&#xff0c;内核级别的性能分析&#xff0c;可以检查kernel实现的…

apollo规划架构

算法的基本架构 我们在最开始直接给出规划决策算法架构框图&#xff0c;然后一一介绍每个框图结构的细节&#xff1a; 模块的入口是 PlanningComponent&#xff0c;在 Cyber 中注册模块&#xff0c;订阅和发布消息&#xff0c;并且注册对应的 Planning 类。Planning 的过程之前…

基于SpringBoot+Vue教材订购系统设计和实现(源码+LW+调试文档+讲解等)

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

DNF手游攻略:云手机辅助流光星陨刀详细攻略大全!

DNF手游中&#xff0c;流光星陨刀是鬼剑士的专属神器之一&#xff0c;拥有快速的攻击速度和优秀的物理与法术攻击属性&#xff0c;因其出色的性能和未来升级的潜力&#xff0c;成为广大玩家关注的焦点。 流光星陨刀的背景与起源 流光星陨刀作为鬼剑士的标志性武器之一&#xf…

使用 Ubuntu x86_64 平台交叉编译适用于 Linux aarch64(arm64) 平台的 QT5(包含OpenGL支持) 库

使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库 目录 使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库写在前面前期准备编译全流程1. 环境搭建2. 复制源码包并解压&#xff0c;创…

论文《Universal Graph Convolutional Networks》笔记

【UGCN】论文提出一个基本问题&#xff0c;即是否不同的网络结构属性应该采用不同的传播机制。通过实验发现&#xff0c;对于完全同配性、完全异配性和随机性的网络&#xff0c;1-hop、2-hop和k-nearest neighbor&#xff08;kNN&#xff09;邻居分别更适合作为信息传播的邻域。…

stm32学习笔记---GPIO输出(理论部分)

目录 GPIO通用输入输出口 GPIO的基本结构 I/O端口位的基本结构 输入部分 输出部分 推挽模式 开漏模式 GPIO的8种工作模式 STM32手册GPIO和AFIO大致介绍 STM32外部的设备和电路 声明&#xff1a;本专栏是本人跟着B站江科大的视频的学习过程中记录下来的笔记&#xff0…

CISP-PTE综合靶机-WinServer2003

1.收集网站的地址和开放的端口,完成前期信息收集。10分 2.访问站点,找出站点的敏感文件,利用返回数据找到相关敏感信 息,完成网站结构的信息收集。10分 3.利用文件包含漏洞读取敏感文件,找出数据库连接凭证,利用此 凭证连接数据库。10分 4.网站后台提权:找出后台管理员登…

Attention系列总结-粘贴自知乎

1. 梦想做个翟老师&#xff1a;阿里&#xff1a;Behavior Sequence Transformer 解读48 赞同 7 评论文章 优点:捕捉用户行为历史序列中的顺序信息。w2v也是捕捉用户序列信息的,本质差异在于啥&#xff1f; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff0…

STM32CubeIDE提示找不到头文件(No such file or directory)的解决办法

0 前言 最近在使用STM32CubeIDE时&#xff0c;发现为工程添加了头文件路径&#xff0c;但编译的时候还是报错&#xff0c;提示找不到头文件&#xff1a; 1 解决办法 1.1 为工程添加头文件路径 右键我们的工程&#xff0c;然后添加头文件路径&#xff08;最好是相对路径&am…

Vue3+TypeScript项目实战——打造雨雪交加的智慧城市

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

C# SerialPort串口通讯

串口通信 在.NET平台下创建C#串口通信程序&#xff0c;.NET 2.0提供了串口通信的功能&#xff0c;其命名空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口&#xff0c;还可以和串口设备进行通信。 创建C#串口通信程序之命名空间 System.IO.Ports命名空间中最重…

【跟我学RISC-V】(三)openEuler特别篇

写在前面 这篇文章是跟我学RISC-V指令集的第三期&#xff0c;距离我上一次发文已经过去一个多月了&#xff0c;在这个月里我加入了oerv的实习项目组&#xff0c;并且还要准备期末考试&#xff0c;比较忙&#xff0c;所以更新频率不高&#xff0c;不过对于Linux kernel和RISC-V…

vue修改node_modules打补丁步骤和注意事项_node_modules 打补丁

1、vue-pdf问题解决及patch-package简介&#xff1a;https://www.jianshu.com/p/d1887e02f8d6 2、使用“黑魔法”优雅的修改第三方依赖包&#xff1a;https://zhuanlan.zhihu.com/p/412753695 3、使用patch-package定制node_modules中的依赖包&#xff1a;https://blog.csdn.…

macbook配置adb环境和用adb操作安卓手机

&#xff08;参考&#xff1a;ADB工具包的安装与使用_adb工具箱-CSDN博客&#xff09; 第一步&#xff1a;从Android开发者网站下载Android SDK&#xff08;软件开发工具包&#xff09;。下载地址为&#xff1a; 第二步&#xff1a;解压下载的SDK压缩文件到某个目录中。 进入解…