Linux之sed命令详解

文章目录


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名**"创始团队·嘉宾"** 和**"内容共创官"** ,现在我来为大家介绍一下有关物联网-嵌入式方面的相关内容。


🍊sed概述

简介:

我们之前的学习中,Vim 采用的是交互式文本编辑模式,你可以用键盘命令来交互性地插入、删除或替换数据中的文本。但本节要讲的 sed 命令不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。

使用场景

· 超大文件处理;

· 对文件进行批量增加,替换等。

· 有规律的文本,例如 以分号,空格等分隔的日志文件等;

说明:

sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:

· 每次仅读取一行内容;

· 根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数。据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;

·将执行结果输出。

当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。

🍊sed语法讲解

格式:

powershell 复制代码
sed [options] '{command}{flags}' [filename]

注意:[]中的数据必须存在,{}内容可省略

options 命令选项

powershell 复制代码
-e 脚本命令 该选项会将其后面的脚本命令添加到已有的命令中。 
-f 脚本文件 该选项会将其文件中的脚本命令添加到已有的命令中。
-n 只显示匹配的行
-i 直接对原文件进行操作,会修改原文件内容。sed命令默认不修改文件

{commmand}[flags]

sed内部常用命令

powershell 复制代码
i:insert,在制定或匹配到的行前面添加新行内容为 string
a:append,在指定或匹配到的行后面追加新行,内容为string
d:delete,删除符合地址定界条件的的行
p: print,默认 sed 对模式空间内的处理完毕后,将输出的结果输出在标准输出p添加 p命令,相当于输出了原文,又一次输出了模式匹配处理后的内容。
s:查找并替换,默认只替换每行中第一次被模式匹配到的字符串,如果修饰符为 g,则为全部替换。
powershell 复制代码
n:  1~512之间的数字 表示指定要替换的字符串出现第几次时才进行替换。
	例如,一行中有 3个 A,但用户只想替换第二个 A,这是就用到这个标记;
g:  对数据中所有匹配到的内容进行替换,如果没有8,则只会在第一次匹
	配成功时做替换操作8例如,一行数据中有 3个 A,则只会替换第一个 A;
p:  会打印与替换命令中指定的模式匹配的行。此标记通常与-n选项一起使
	用。

🍊场景训练

场景1:显示/etc/passwd第三行的信息

powershell 复制代码
之前学习的命令展示:head -3 /etc/passwd | tail -1

sed 命令:
sed -n '3p' /etc/passwd  //3是行号,p是输出

场景2:在/etc/passwd中第一行前添加一行内容为"Good Good Study"

powershell 复制代码
sed -e '1iGood Good Study' /etc/passwd 
//这里的1代表第一行,i代表插入的意思。表示在第1行前插入新的字符串。

场景3:把/etc/passwd中所有名字为root的字符串改为class

powershell 复制代码
sed 's/旧字符串/新字符串/g' 文件名
功能:替换所有的字符串

sed 's/旧字符串、新字符串、数字' 文件名
功能:替换每行中第(数字)次出现该字符串的数据
powershell 复制代码
sed -e 's/root/class/g' /etc/passwd

场景4:删除/etc/passwd中内容并列出行号,同时将2~5行删除

powershell 复制代码
cat -n /etc/passwd | sed '2,5d'

场景5:把/etc/passwd文件中root用户的信息以带行号的形式重定向到log.txt 文件中;要求把log.txt文件中的root替换为linux,并且log.txt中保存替换后的文件

powershell 复制代码
cat -n /etc/passwd > log.txt
powershell 复制代码
sed -i 's/root/linux/g' log.txt
相关推荐
VVVVWeiYee11 分钟前
项目2路由交换
运维·服务器·网络·网络协议·信息与通信
lifeng43211 小时前
Jenkins集成部署(图文教程、超级详细)
运维·jenkins
白手小弟2 小时前
python wxauto库实现微信自动化发送信息、回复、添加好友等
运维·自动化
ii_best2 小时前
ios按键精灵自动化的脚本教程:自动点赞功能的实现
运维·ios·自动化
3DVisionary2 小时前
数字图像相关DIC技术用于机械臂自动化焊接全场变形测量
运维·数码相机·自动化·焊接变形实验·数字图像相关dic技术·自动化焊接全场变形测量·非接触高精度环境适应性全场测量
小伍_Five2 小时前
透视网络世界:计算机网络习题的深度解析与总结【前3章】
服务器·网络·计算机网络
芷栀夏2 小时前
如何在任何地方随时使用本地Jupyter Notebook无需公网IP
服务器·ide·tcp/ip·jupyter·ip
G鲲鹏展翅Y2 小时前
jupyter-lab与实验室服务器远程链接
服务器·jupyter
IT机器猫3 小时前
Docker完整技术汇总
运维·docker·容器
无所不在的物质3 小时前
Jenkins基础教程
运维·云原生·自动化·jenkins