Linux三剑客之-sed

一、sed简介

在Linux/UNIX系统中包含很多种类的文本处理器或文本编辑器,其中包括其中包括我们之前学习过的VIM 编辑器与grep 等。而 grep,sed,awk 更是Shell 编程中经常用到的文本处理工具, 被称之为Shell 编程三剑客。

sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。

sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。

二、sed工作原理

一行一行处理的,当从文件中读取一行后,首先放到模式空间中对该行进行相应的处理,处理完将结果输出到屏幕上。然后继续读取下一行内容,直到所有行都读取完毕,sed结束。

三、sed基本参数

语法:

sed [选项] '模式动作' 文件...

选项:

  • -n:静默输出,关闭模式空间的输出,不会输出未匹配到的行 一般与p命令结合使用

  • -e:允许进行多项编辑,也就是说对同一行做多次处理、. 可以做多点编辑

  • -e '动作1' -e '动作2' == '动作1;动作2'

  • -f:后接sed脚本,指定执行的sed脚本(将模式动作写到文件中)

  • -r:允许使用扩展正则

  • -i:直接作用于原文件 没有输出 在使用-i之前一定先不加-i看看效果

  • -i.bak:修改原文件之前进行备份

模式:

  1. 空模式,表示所有的行都执行动作

  1. 以行号作为模式

1). 单独的行号

如:1 就是处理第1行

$ 处理最后一行

2). 起始行,结束行

如:1,5 处理第1到5行

3). 起始行~步长

每隔多少行操作一次

如:2~2 从第2行开始,每隔1行

4). 起始位置,+N

表示从起始位置开始,后面的N行都进行处理

如:3,+5 处理3-8行

  1. 以正则作为模式

1). /正则表达式/

如:/^root/

2). /正则表达式1/,/正则表达式2/

表示从第一次匹配到正则表达式1开始到第一次匹配到正则表达式2之间的所有行

如:/^bin/,/sh$/

动作-----处理命令: ! 非 : 放在命令前面表示取反

  • d 删除 delete

  • p 打印 print

  • r 读取 read

  • w 写 write

  • a 追加 在匹配的行下面插入内容 append

  • i 插入 在匹配行的上一行插入内容 insert

  • c 修改 本行替换 change

  • y 转换的命令,一一对应转换

  • n 处理下一行 next

  • q 退出,不会再向模式空间读入新的行 quit

  • s 查找替换

'模式s/旧的内容(正则表达式)/替换内容(新的内容)/[修饰符]'

修饰符:

g:全局替换

n:n为数字,1-512 替换第n个匹配到的内容

p:打印 -n

w:把处理过的行写入到另一个文件

四、使用示例

1.从以root开头的行,到以login结尾的行,将sbin替换为bin (/etc/passwd文件或其一部分)

sed -r -n '/root/,/login/s/sbin/bin/p' /etc/passwd

2.将格式为2014/08/17的日期,替换为2023; 02; 02这样的格式(注意:分号后面有空格)

date +"%Y/%m/%d"|sed 's/\//; /g'

3.将pass文件每行打印3次

sed 'p;p;' /tmp/pass

4.打印pass文件的第1行和第3行

sed -n '1p;3p;' /tmp/pass

5.删除pass文件的第一行和最后一行

sed '1d;$d' pass

6.删除pass文件中所有的数字

sed -r 's/[0-9]*//g' pass

7.去掉pass文件行首的.字符

sed-i 's/^.//g' pass

8.在pass文件行首添加一个a字符

sed 's/^/a/g' pass

9.在pass文件行尾添加一个a字符

sed 's/$/a/' 文件名

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值