Shell脚本文本三剑客之Sed

目录

一、Sed编辑器

1.1 Sed概述

1.2 Sed工作流程

1.3 Sed基本用法

1.4 Sed常用选项

1.5 sed命令的常用操作

常见的操作

二、用法示例

2.1 输出符合条件的文本(p 表示正常输出)

示例1:打印文件第n行

示例2:打印文件第4-7行

 示例3:打印奇数行​

示例4:打印偶数行

示例5:从第十行开始打印偶数行

示例6:打印第二行所有内容

示例7:打印文件中所有带the的行

示例8:从第四行开始打印文件中带the的行

示例9:输出文件中带the的行号

示例10:打印以PI开头的行  打印以he开头的行

示例11:打印以数字结尾的行

示例12:输出包含单词wood 的行,\<、\>代表单词边界

2.2 删除符合条件的文本(d)

示例1:打印文件中删除6-9行的内容

示例2:删除包含wood的行,第八行包含已被删除

示例3:删除以a-z开头的所有行

示例4:删除所有以“.”结尾的行

示例5:删除文件中所有空行

2.3 替换符合条件的文本

示例1:把每行的第一个the换成THE

示例2:把前面的oo换成00

示例3:把每行第二个l换成L

示例4:把文件中所有o替换为空行

示例5:sed -i   直接编辑文本文件

2.4 迁移符合条件的文本

参数

示例1:将包含the的行迁移到文件末尾,{;}用于多个操作

示例2:将第1-5行内容转移到第14行后

示例3:把包含the的行另存为out.test

示例4:将文件/etc/hostname(主机名)添加到包含the的每行以后

示例5:在第4行后插入一个新行,内容为youshoujiuxing

示例6:在包含the的每行后插入一个新行,内容为NIU

示例7: 在第4行后插入多行内容,中间的\n表示换行

2.5 使用脚本编辑文件

示例


一、Sed编辑器

1.1 Sed概述

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

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

1.2 Sed工作流程

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

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

1.3 Sed基本用法

sed -e '编辑指令' 文件1 文件2

sed -n -e '编辑指令' 文件1 文件2

sed -i -e '编辑指令' 文件1 文件2

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

1.4 Sed常用选项

-e 或--expression=:表示用指定命令或者脚本来处理输入的文本文件。
-f 或--file=:表示用指定的脚本文件来处理输入的文本文件。
-h 或--help:显示帮助。
-n、--quiet 或 silent:表示仅显示处理后的结果。
-i.bak:直接编辑文本文件。
-r, -E 使用扩展正则表达式
-s  将多个文件视为独立文件,而不是单个连续的长文件流

1.5 sed命令的常用操作

“操作”用于指定对文件操作的动作行为,也就是 sed 的命令。通常情况下是采用的“[n1[,n2]]”操作参数的格式。n1、n2 是可选的,代表选择进行操作的行数,如操作需要在 5~ 20 行之间进行,则表示为“5,20 动作行为”。常见的操作包括以下几种。

常见的操作

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

二、用法示例

2.1 输出符合条件的文本(p 表示正常输出)

以test.txt文件为例

sed -n 'p' test.txt 输出所有内容,等同于 cat test.txt

示例1:打印文件第n行

示例2:打印文件第4-7行

 示例3:打印奇数行

示例4:打印偶数行

示例5:从第十行开始打印偶数行

示例6:打印第二行所有内容

示例7:打印文件中所有带the的行

示例8:从第四行开始打印文件中带the的行

示例9ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值