【无标题】

文本处理三剑客-sed指令用法详解

1. sed的作用

sed(stream editor)sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:

每次仅读取一行内容;
根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;
将执行结果输出。
当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。

sed语法

1> sed命令行格式语法:
sed [option] 'command(s)' files
2> sed脚本文件语法:
sed [-n] -f scriptfile files

sed常用选项:

命 令 说 明
a\ 在当前行后添加一行或多行
c\ 用新文本修改(替换)当前行中的文本
d 删除行
i\ 在当前行之前插入文本
h 把模式空间里的内容复制到暂存缓存区
H 把模式空间里的内容追加到暂存缓存区
g 取出暂存缓冲区里的内容,将其复制到模式空间,覆盖该处原有内容
G 取出暂存缓冲区里的内容,将其复制到模式空间,追加在原有内容后面
l 列出非打印字符
p 打印行
n 读入下一输入行,并从下一条命令而不是第一条命令开始处理
q 结束或退出 sed
r 从文件中读取输入行
! 对所选行意外的所有行应用命令
s 用一个字符串替换另一个

替换标志:

g 在行内进行全局替换
p 打印行
w 将行写入文件
x 交换暂存缓冲区与模式空间的内容
y 将字符转换为另一字符(不能对正则表达式使用 y 命令)

简单示例:

替换文本:

sed 's/old_text/new_text/' filename

将文件中的old_text替换为new_text

全局替换文本:

sed 's/old_text/new_text/g' filename

将文件中所有的old_text替换为new_text

仅打印包含特定模式的行:

sed -n '/pattern/p' filename

sed -n ‘/pattern/p’ filename

删除特定模式的行:

sed '/pattern/d' filename

删除包含pattern的行

插入文本:

sed '1i\inserted_text' filename

在文件的第一行之前插入inserted_text

在匹配模式后插入文本:

sed '/pattern/a\inserted_text' filename

在包含pattern的行之后插入inserted_text

在特定行范围内进行替换:

sed '2,5s/old_text/new_text/' filename

在第2行到第5行之间将old_text替换为new_text

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值