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
相关推荐
传而习乎3 分钟前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
soulteary4 分钟前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
我们的五年12 分钟前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
爱吃青椒不爱吃西红柿‍️32 分钟前
华为ASP与CSP是什么?
服务器·前端·数据库
IT果果日记34 分钟前
ubuntu 安装 conda
linux·ubuntu·conda
Python私教36 分钟前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
羑悻的小杀马特1 小时前
环境变量简介
linux
小陈phd1 小时前
Vscode LinuxC++环境配置
linux·c++·vscode
运维&陈同学1 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
是阿建吖!1 小时前
【Linux】进程状态
linux·运维