文本三剑客之sed

目录

sed编辑器

sed 的核心作用

sed 的工作流程

命令格式:

ded 命令常用选项

主要看 sed命令的操作符 

默认打印方式:

sed的删除操作

匹配字符串内容删除

字符串搭配正则进行删除:

面试题

删除空行的三种方式

面试题

不删除文件  要删除文件内容


sed编辑器

sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。

sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。

sed 的核心作用

sed对文本进行增删改查

sed -i :加-i 才会文本文件里生效

sed : 什么都不加就是临时模式,文本的类容是不会发生变化的

sed 的工作流程

读取:: sed 从输入流  中读取一行内容并存储到临时的缓冲区中  (又称模式空间,pattern space)

执行:默认情况下,所有的sed 命今都在模式空间中顺序地执行,除非指定了行的地址,否则sed 命令 将会在所有的行上依次执行。

显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行

命令格式:

sed -e ’操作‘ 文件1 文件2...
sed -n  -e ’操作’  文件1 文件2 ...
sed -f 脚本文件   文件1   文件2 ...
sed -i -e ‘操作’  文件1 文件2 ...

ded 命令常用选项

-e 或--expression= 表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用
-f 或--file= 表示用指定的脚本文件来处理输入的文本文件。
-h 或--help 显示帮助。
-i 直接修改目标文本文件   慎用!!! 确认了再往里输入
-n 仅显示script处理后的结果

sed 命令操作

-e ------ 就类似打印的意思

文本三剑客之sed_第1张图片

 -e ----- 也可对多个文件操作文本三剑客之sed_第2张图片

-f ----- 显示帮助。

文本三剑客之sed_第3张图片

 -i -----  直接修改目标文本文件   慎用!!! 确认了再往里输入

主要看 sed命令的操作符 

s 替换,替换指定字符。ky27 kyy27
d 删除,删除选定的行
a 增加,在当前行下面增加一行指定内容。
i 插入,在选定行上面插入一行指定内容。
c 替换,将选定行替换为指定内容。
y 字符转换,转换前后的字符长度必须相同。
p 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,
则以 ASCII 码输出。其通常与“-n”选项一起使用。
= 打印行号。
l(小写L) :打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)
r 扩展正则表达式


默认打印方式:

sed '  '

文本三剑客之sed_第4张图片

 sed ' ' /etc/fstab  : '  '必须要加 不加会报错文本三剑客之sed_第5张图片

  sed -e 'p' 5.txt   这样打印出来会多打印一样

文本三剑客之sed_第6张图片

 sed -n ‘p’  5.txt  加个-n就可以过滤的sed的默认输出

  文本三剑客之sed_第7张图片

[root@localhost opt]# sed -n '3p' 7.txt  # 打印文件第三行

[root@localhost opt]# sed -n '2p' 7.txt   #打印文件第二行

 文本三剑客之sed_第8张图片

=  打印行号

‘=;p’ 打印行号也显示内容

 文本三剑客之sed_第9张图片

sed -n '$p' 7.txt    #打印最后一行 空格也打印

 文本三剑客之sed_第10张图片

行号区间范围打印

‘4,$P’  第四行和最后一行

‘1,3p’  第一行和第三行打印

 文本三剑客之sed_第11张图片

sed的删除操作

Sed ‘d‘ 5.txt 删除所有,什么也不打印

sed -n '3d;p' 5.txt    ---删除第三行,打印剩余的所有内容

文本三剑客之sed_第12张图片

 sed -n '5,8d;p' 5.txt  删除5到8行,打印剩余的所有内容

文本三剑客之sed_第13张图片

 sed -n '5,$d;p' 5.txt  删除5到最后一行行,打印剩余的所有内容

文本三剑客之sed_第14张图片

 sed '4,6!d' 5.txt      ---除了4-6行,其他的全部删除

文本三剑客之sed_第15张图片

 如果想生效  sed -i -n  一定要加 -i 才可以

文本三剑客之sed_第16张图片 

sed '/2/d' 5.txt       删除包含2的行

sed '/2/,/3/d' 5.txt    删除one-six的行

文本三剑客之sed_第17张图片

 

匹配字符串内容删除

sed '/1/,/7/d' 5.txt    ---删除1--7的行  保留8-9行

sed '/4/,/5/!d' 5.txt   ---除了4-5的行  

文本三剑客之sed_第18张图片

 sed '/5/!d' test1.txt   ---除了5的行,其余的全部删除,反向删除

 

字符串搭配正则进行删除:

sed '/^$/d' test1.txt   ---通过^$,来删除空行

文本三剑客之sed_第19张图片

 

面试题

删除空行的三种方式

grep -v "^$" test1.txt     ----过滤出非空行

文本三剑客之sed_第20张图片

 cat test1.txt |tr -s "\n"  压缩换行符

文本三剑客之sed_第21张图片

sed '/^$/d' test1.txt  -删除空行

 文本三剑客之sed_第22张图片

 

面试题

不删除文件  要删除文件内容

文本三剑客之sed_第23张图片

 

你可能感兴趣的:(linux,运维,服务器)