Linux之sed命令详解
文章目录
- 🍊自我介绍
- 🍊sed概述
- 🍊sed语法讲解
- 格式:
- options 命令选项
- {commmand}[flags]
- 🍊场景训练
你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~
🍊自我介绍
Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾” 和“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的相关内容。
🍊sed概述
简介:
我们之前的学习中,Vim 采用的是交互式文本编辑模式,你可以用键盘命令来交互性地插入、删除或替换数据中的文本。但本节要讲的 sed 命令不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。
使用场景
号
· 超大文件处理;
· 对文件进行批量增加,替换等。
· 有规律的文本,例如 以分号,空格等分隔的日志文件等;
说明:
sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:
· 每次仅读取一行内容;
· 根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数。据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;
·将执行结果输出。
当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。
🍊sed语法讲解
格式:
sed [options] '{command}{flags}' [filename]
注意:[]中的数据必须存在,{}内容可省略
options 命令选项
-e 脚本命令 该选项会将其后面的脚本命令添加到已有的命令中。
-f 脚本文件 该选项会将其文件中的脚本命令添加到已有的命令中。
-n 只显示匹配的行
-i 直接对原文件进行操作,会修改原文件内容。sed命令默认不修改文件
{commmand}[flags]
sed内部常用命令
i:insert,在制定或匹配到的行前面添加新行内容为 string
a:append,在指定或匹配到的行后面追加新行,内容为string
d:delete,删除符合地址定界条件的的行
p: print,默认 sed 对模式空间内的处理完毕后,将输出的结果输出在标准输出p添加 p命令,相当于输出了原文,又一次输出了模式匹配处理后的内容。
s:查找并替换,默认只替换每行中第一次被模式匹配到的字符串,如果修饰符为 g,则为全部替换。
n: 1~512之间的数字 表示指定要替换的字符串出现第几次时才进行替换。
例如,一行中有 3个 A,但用户只想替换第二个 A,这是就用到这个标记;
g: 对数据中所有匹配到的内容进行替换,如果没有8,则只会在第一次匹
配成功时做替换操作8例如,一行数据中有 3个 A,则只会替换第一个 A;
p: 会打印与替换命令中指定的模式匹配的行。此标记通常与-n选项一起使
用。
🍊场景训练
场景1:显示/etc/passwd第三行的信息
之前学习的命令展示:head -3 /etc/passwd | tail -1
sed 命令:
sed -n '3p' /etc/passwd //3是行号,p是输出
场景2:在/etc/passwd中第一行前添加一行内容为“Good Good Study”
sed -e '1iGood Good Study' /etc/passwd
//这里的1代表第一行,i代表插入的意思。表示在第1行前插入新的字符串。
场景3:把/etc/passwd中所有名字为root的字符串改为class
sed 's/旧字符串/新字符串/g' 文件名
功能:替换所有的字符串
sed 's/旧字符串、新字符串、数字' 文件名
功能:替换每行中第(数字)次出现该字符串的数据
sed -e 's/root/class/g' /etc/passwd
场景4:删除/etc/passwd中内容并列出行号,同时将2~5行删除
cat -n /etc/passwd | sed '2,5d'
场景5:把/etc/passwd文件中root用户的信息以带行号的形式重定向到log.txt 文件中;要求把log.txt文件中的root替换为linux,并且log.txt中保存替换后的文件
cat -n /etc/passwd > log.txt
sed -i 's/root/linux/g' log.txt