Linux三剑客工具之sed命令

0    242    2

👉 本文共约3608个字,系统预计阅读时间或需14分钟。

Linux三剑客工具之grep和egrep命令:https://www.xmmup.com/linux-grepheegrepmingling.html

Linux三剑客工具之awk命令:https://www.xmmup.com/linux-awk-mingling.html

Linux三剑客工具之sed命令:https://www.xmmup.com/linuxsanjiankegongjuzhisedmingling.html

Linux cut命令:https://www.xmmup.com/linux-cutmingling.html

linux中有著名的三个命令,即grep、sed、awk。这三个命令被称为linux三剑客。三剑客包含各种招式众多,熟练掌握这三个命令的用法,将大大提高我们对文件的处理速度,大大提升运维效率。

sed简介

sed简称流编辑器,即stream editor的缩写。sed是一个操作、过滤和转换文本内容的强大工具。常用的功能有通过结合正则表达式对文件实现快速的增删改查。最常用的查询功能是过滤(过滤指定字符串)取行(取出指定行)

sed语法

1、sed常用语法如下:

或通过执行命令以管道符输送给sed命令处理

(1)sed常用选项参数有:

-n:表示取消默认的sed输出,通常与sed内置命令p一起使用;
-i:表示直接将修改结果写入文件,如果不加-i,sed修改的是内存数据;
-e:表示多次编辑,不需要管道符号;
-r:表示支持正则表达式;

(2)sed内置的命令字符,主要是用于对文件进行增删改查等操作,常见内置命令字符有:

a:表示对文本进行追加操作,在指定行后面添加一行或多行文本;
d:表示删除匹配行;
c: 替换行;
i:表示插入文本,在指定行前添加一行或多行文本;
p:表示打印匹配行内容,通常与-n一同使用;
s/正则/替换内容/g:表示匹配正则内容,然后替换内容(支持正则表达式),结尾g表示全局匹配;
=:打印行号;
r:表示读取文件或者导入文件内容;
w:表示文件另存为或者导出文件内容;

(3)sed匹配范围主要有:

空地址:表示全文处理;
单地址:表示指定文件某一行;
/pattern/:表示被模式匹配到的每一行;
范围区间:如12,22表示十二行到二十二行,如12,+5表示第12行向下5行;
步长:如1~2,表示1,3,5,7,9行;2~2,表示2,4,6,8,10行;

示例

一、通过定位符打印文件中指定的行

首先准备一份文件sed_test.txt进行例子演示,该文件内容如下所示:

例子1、通过sed命令打印sed_test.txt文件第4行的内容,命令执行如下:

例子2、通过sed命令打印sed_test.txt文件第1行到第4行的内容,命令执行如下:

例子3、通过sed命令打印sed_test.txt文件第2行以及后面的4行的内容,命令执行如下:

例子4、通过sed命令打印sed_test.txt文件第1行开始,步长为2的所有内容,命令执行如下:

例子5、通过sed命令打印sed_test.txt文件以we开头的所有行,命令执行如下:

例子6、通过sed命令打印sed_test.txt文件中有like的所有行,命令执行如下:

例子7、通过sed命令打印sed_test.txt文件第1行,第3行,第5行的所有行,命令执行如下:

例子8、通过sed命令打印sed_test.txt文件第3行以外的所有行,命令执行如下:

例子9、通过sed命令过滤内存信息,命令执行如下所示:

例子10、通过sed命令过滤磁盘根分区的信息,命令执行如下所示:

二、删除指定文件中相关内容

如果要对源文件进行删除操作,需要加上-i选项!!!

首先准备一份文件sed_test01.txt进行例子演示,该文件内容如下所示:

例子1、通过sed命令删除sed_test01.txt文件第3行的内容,命令执行如下:

例子2、通过sed命令删除sed_test01.txt文件中以#开头的行,命令执行如下:

例子3、通过sed命令删除sed_test01.txt文件中不包含like的行,命令执行如下:

例子4、通过sed命令删除sed_test01.txt文件中空白的行,命令执行如下:

例子5、通过sed命令将sed_test01.txt文件中所有行替换为haodaolinux,命令执行如下:

例子6、通过sed命令将sed_test01.txt文件中第3行替换为haodaolinux,命令执行如下:

例子7、通过sed命令将sed_test01.txt文件中boy所在的行替换为boy=student,命令执行如下:

例子8、通过sed命令将sed_test01.txt文件中每一行的第1个we替换为they,命令执行如下:

例子9、通过sed命令将sed_test01.txt文件中每一行的所有we替换为they,命令执行如下:

例子10、通过sed命令将sed_test01.txt文件中每一行的第3个we替换为they,命令执行如下:

例子11、通过sed命令将sed_test01.txt文件中每一行的所有we替换为(we),命令执行如下:

例子12、通过sed命令将sed_test01.txt文件中第4行的所有we替换为they,命令执行如下:

例子13、通过sed命令将sed_test01.txt文件中第4行的所有we进行删除,命令执行如下:

例子14、通过sed命令将sed_test01.txt文件中第4行的第1个we替换为they,并且只将该行打印输出,命令执行如下:

例子15、通过sed命令将sed_test01.txt文件中第4行的行号打印输出,命令执行如下:

例子15、通过sed命令将sed_test01.txt文件中包含like的行的行号打印输出,命令执行如下:

例子16、通过sed命令将sed_test01.txt文件中将以java结尾的行的行号打印输出,命令执行如下:

例子17、通过sed命令将sed_test01.txt文件中总的行号打印输出,命令执行如下:

三、通过sed对文件中的多行文本进行处理:

如果要对源文件进行编辑操作,需要加上-i选项!!!

首先准备一份文件sed_test02.txt进行例子演示,该文件内容如下所示:

例子1、通过sed命令在sed_test02.txt文件中的第2行前插入we are study,命令执行如下:

例子2、通过sed命令在sed_test02.txt文件中有mysql的行前插入you are study,命令执行如下:

例子3、通过sed命令在sed_test02.txt文件中的第2行h后追加we are study too,命令执行如下:

例子4、通过sed命令在sed_test02.txt文件中有mysql的行后追加you are study too,命令执行如下:

例子5、两个文件内容合并实例:

首先创建read.txt文件内容如下所示:

1)通过sed命令读取read.txt文件的内容,将读取内容追加到sed_test02.txt文件中每一行的后面,命令执行如下:

2)通过sed命令读取read.txt文件的内容,将读取内容追加到sed_test02.txt文件中的第3行的后面,命令执行如下:

3)通过sed命令读取read.txt文件的内容,将读取内容追加到sed_test02.txt文件中有mysql行的后面,命令执行如下:

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

例子6:文件内容另存为其它文件实例:

1)通过sed命令读取sed_test02.txt文件中所有内容,另存为write.txt文件,命令执行如下:

2)通过sed命令将sed_test02.txt文件中包含mysql的行,另存为write_mysql.txt文件,命令执行如下:

3)通过sed命令将sed_test02.txt文件中1行到3行的内容,另存为write_13.txt文件,命令执行如下:

参考

https://mp.weixin.qq.com/s/1Nc1WZBW2nsK8x10yqwAtA

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

17 + 11 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部