“Linux文本三剑客”中的sed命令

一、sed编辑器

1.1 sed概述

sed是一种流编辑器。每一次处理内容,只有确认才会生效,不确认只是把模式空间的临时数据展示给用户,然后删除。

sed编辑器会按照文本的行顺序,一行一行向下处理,直到文件的最后一行。

1.2 sed命令格式

sed -e "操作" 文件1 文件2

sed -e "操作1 ;操作2" 文件

常用选项:
-e:指定命令来处理输入的文本文件,只有一个操作-e可以省略;多个指令才用-e
-f:用特定的脚本文件来处理输入的文件
-i:即时生效(慎用)
-n:仅显示script处理后的结果

 

二、sed常用操作命令及选项

2.1 打印操作:'p'

sed的默认打印方式:sed自己有一个默认输出,再加上操作'p'的打印,就会重复打印

-n:禁止默认输出

打印指定行

只打印行号

输出的同时打印行号

只打印最后一行

指定连续行数打印

示例:打印1-3行

指定不连续的行数打印

示例:打印第1行和第3行

打印奇数行和偶数行

对文本内容过滤打印

示例:打印包含o字符串的内容和th字符串的内容

使用正则表达式过滤

示例1:打印/etc/passwd下以root开头的行和以bash为结尾的行

示例2:在/etc/passwd文件中从第4行开始一直打印到第一个以bash为结尾的所在行

[root@pup1 ~]# sed -n '4,/bash$/p' /etc/passwd

使用扩展正则表达式

sed -r

示例1:打印/etc/passwd文件中包含两个'99:'的所在行

示例2:打印/etc/passwd文件下要么以root开头要么以bash结尾的所在行

2.2 删除操作:'d'

免交互删除文件内容

输入到黑洞

sed -i即时生效删除

删除指定行,打印剩余内容

删除连续多行,打印剩余内容

删除指定行至最后一行

取反的方式:

匹配字符串的内容进行的删除

匹配字符串的内容进行它们之间的行的删除

(除了他们之间的行,删除其他:在d前面加!)

使用正则表达式删除

删除或过滤出非空行

用grep

2.3 替换操作

s:替换指定字符串

格式:
sed 's/原字符/替换字符/' 指定文件

示例1:

示例2:以root为开头开始处理,若以空开头将其替换成#

将大写英文字符替换成小写

l&:转换成小写的特殊符号,在前面加上转义符

g:全部替换

将小写英文字符替换成大写

u&:转换成大写的特殊符号,在前面加上转义符

将字符串换顺序

运用扩展正则表达式加分组

c:整行替换

替换匹配字符串的所在行内容

格式:
sed '/原字符/c 替换字符' 指定文件

示例:

f:单字符替换 

格式:
sed 'y/原字符/替换字符/' 指定文件

示例:

2.4 新增操作

a:在匹配行的下一行添加内容

格式:
sed '/字符串/a 添加内容' 指定文件

i:在匹配行的上一行添加内容

格式:
sed '/字符串/i 添加内容' 指定文件

r:可以从其他文件读取内容,然后在匹配行的行后添加下

格式:
sed '/字符串/r 供给文件' 指定文件

$a:直接在文本的最后一行添加内容

格式:
sed '$a 添加内容' 指定文件

$i:在最后一行和倒数第二行之间添加

2.5 -f选项:通过文件来修改文件

格式:
sed -f 指令文件 需修改文件

示例1:

示例2:将文件中的空格替换成_

三、总结练习

示例1:重亮显示文件中软件的版本(数字)

提取版本号

示例2:选择一个时间段打印其此段时间生成的日志文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值