Linux Shell脚本文本三剑客之Sed

一、Sed

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

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

Sed工作流程
sed 的工作流程主要包括读取、执行和显示三个过程: 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。 执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed 命令 将会在所有的行上依次执行。 显示font>:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空

默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出

Sed基本用法
sed  -e  '操作'  文件1  文件2

sed  -n  -e  '操作'   文件1   文件2

sed   -f  脚本文件   文件1   文件2

sed   -i   -e   '操作'   文件1   文件2

Sed常用选项
-e 或 - -expression=              多点编辑

-f 或- -file=                            表示用指定的脚本文件来处理输入的文本文件。

-h 或- -help                           显示帮助。

-n                                         不输出模式空间内容到屏幕,即不自动打印,加p,又恢复自动打印

-i                                           备份文件文件并原处编辑

-r                                          使用扩展正则表达式

Sed命令的常用操作
s                                替换,替换指定字符

d                               删除,删除选定的行

a                                增加,在当前行下面增加一行指定内容

i                                 插入,在选定行上面插入一行指定内容

c                                替换,将选定行替换为指定内容

Y                                字符转换,转换前后的字符长度必须相同

p                                 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容; 如果有非打印字符,则以 AscII码输出。其通常与_n"选项一起使用

=                                  打印行号

l(小写L)                 打印数据流中的文本和不可打印的ASCII字符(比如结束符s、制表符\t)

二、Sed命令使用
打印内容
例:打印全部内容

sed   ‘ ’                交互模式输入一行,自动打印一行相同的

sed   -n   ‘ ’            交互模式输入一行,关闭自动打印

sed   -n   ‘ p’          加上p又恢复自动打印

 

例:查看文件,打印全部内容

法一

 法二

 例:打印指定行内容

例:根据地址,打印指定多行内容

  例:打印多行后退出

例:打印最后一行,使用通配符 $

例:支持正则表达式

查找基本格式

sed  -n  '//,//p'   文件名

第一个//表示开头位置,第二个//表示结尾位置

  例:过滤关键字

 例:'#,/关键字/p'  从第#行开始匹配

 例:打印文本的奇数和偶数行

 

 

 

 

删除内容

例:删除指定行

删除指定行并不是真正删除,只是将删除了的结果显示出来,并不是真正删除了

 

 例:删除文本中的空行

 

 

插入内容

例:在指定行后插入

例:替换

 

 例:取反 

搜索替换
 格式:sed   行范围   s/旧字符/新字符串/替换标记

替换标记

数字:表明新字符串将替换第几处匹配的方

g : 表明新字符串将会替换所有匹配的地方

p : 打印与替换命令匹配的行,与 -n 一起使用

w 文件 :将替换的结果写到文件中

例:修改selinux开机不自启配置文件

 

 

分组调用 

分组使用()(),调用第一段使用 \1

                                 调用第二段使用 \2

                                 调用所有分组 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值