linuxsed的详细讲解与使用方法 (linuxsed命令教程交流)

简介

sed是一款流编辑工具,用来对文本进行过滤与替换操作,特别是当你想要对几十个配置文件做统一修改时,你会感受到Sed的魅力!sed通过一次仅读取一行内容来对某些指令进行处理后输出,

所以sed更适合于处理大数据文件。首先,Sed通过文件或管道读取文件内容,

但Sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,我们称之为模式空间( patterm space),

所有的指令操作都是在模式空间中进行的,然后Sed根据相应的指令对模式空间中的内容进行处理并输出结果,默认输出至标准输出(即屏幕上)。

语法格式

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 :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

Y :按字符转换

W:保存至文件

d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;

i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

l :打印(显示非打印字符)

L:打印(不显示非打印字符)

p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

标记

g 表示行内全部替换,ng表示第n个匹配的开始进行替换

w 表示把行写入一个文件

\1 字串匹配标记(划重点)

& 已匹配字符串标记

示例1:在文件第6行添加一行

1、test.txt文件内容

linuxsed命令的高级玩法,linux运维之sed怎么用

[root@localhost myproject]# sed -e 6a\newline test.txt

linuxsed命令的高级玩法,linux运维之sed怎么用

示例2:在文件删除第6行内容

[root@localhost myproject]# sed '6d' test.txt

linuxsed命令的高级玩法,linux运维之sed怎么用

删除后同时把修改后的内容保存到原文件中

[root@localhost myproject]# sed '6d' test.txt >>test.txt

linuxsed命令的高级玩法,linux运维之sed怎么用

示例3:替换,把newline替换成为newlinereplace

test.txt原内容

2017-8-31 13:52:53 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2017-8-31 13:52:53 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 471 ms
2017-8-31 13:52:53 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2017-8-31 13:52:53 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2017-8-31 13:52:53 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 471 ms
2017-8-31 13:52:53 org.apache.catalina.core.StandardService start
2017-8-31 13:52:53 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2017-8-31 13:52:53 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 471 ms
2017-8-31 13:52:53 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
newline
2017-8-31 13:52:53 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2017-8-31 13:52:53 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 471 ms
2017-8-31 13:52:53 org.apache.catalina.core.StandardService start
[root@localhost myproject]# sed 's/newline/newlinereplace/g' test.txt 

linuxsed命令的高级玩法,linux运维之sed怎么用