计算机语言工具文Linux各种操作

Linux文本处理三剑客之--- sed的使用教程

2021-08-24  本文已影响0人  莫讠

sed

3.1 认识sed

sed 是一种流编辑器,它一次处理一内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’ 的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出或-i

功能:主要用来自动编辑一个或多个文件, 简化对文件的反复操作

3.2 使用sed

3.2.1 命令格式

sed [options] '[地址定界] command' file``(s)

3.2.2 常用选项options

3.2.3 地址定界

3.2.4 编辑命令command

3.3 sed用法演示

3.3.1 常用选项options演示

qinwj 14:42:14 R290-1: /mnt/X500/farmers/qinwj
$ cat demo 
aaa
bbbb
AABBCCDD
$ sed /aa/p demo 
aaa
aaa
bbbb
AABBCCDD
$ sed -n /aa/p demo 
aaa
$ sed -e "s/a/A/" -e "s/b/B/" demo
Aaa
Bbbb
AABBCCDD
$ cat sedscirpts 

s/A/a/g
$ sed -f sedscirpts demo 
aaa
bbbb
aaBBCCDD
$ sed -i.bak "s/A/a/g" demo
$ cat demo
aaa
bbbb
aaBBCCDD

并且会自动生成改动前的.bak的备份文件

$ cat demo.bak 
aaa
bbbb
AABBCCDD

3.3.2 地址界定演示

$ cat demo
aaa
bbbb
AABBCCDD
aaaAAAbbbBBBcc

$ sed "2s/b/B/g" demo
aaa
BBBB
AABBCCDD
aaaAAAbbbBBBcc
$ sed -n "/aaa/p" demo
aaa
aaaAAAbbbBBBcc
$ sed -n "1,2p" demo
aaa
bbbb
$ sed -n "2,/DD/p" demo
bbbb
AABBCCDD
$ sed "1~2s/[aA]/E/g" demo
EEE
bbbb
EEBBCCDD
aaaAAAbbbBBBcc

3.3.3 编辑命令command演示

$ cat demo
aaa
bbbb
AABBCCDD
aaaAAAbbbBBBcc
$ sed "2d" demo # 删除第二行
aaa
AABBCCDD
aaaAAAbbbBBBcc
$ sed -n "2p" demo
bbbb
$ sed "2a123" demo
aaa
bbbb
123
AABBCCDD
aaaAAAbbbBBBcc
$ sed "1i123" demo
123
aaa
bbbb
AABBCCDD
aaaAAAbbbBBBcc
$ sed "3c123\n456" demo #将第三行的内容替换成123\n456
aaa
bbbb
123
456
aaaAAAbbbBBBcc
$ sed -n "=" demo
1
2
3
4
$ sed -n '2!p' demo #打印除了第2行的内容
aaa
AABBCCDD
aaaAAAbbbBBBcc

将文本内容中的大写都转换成小写

$ sed "s/[a-z]/\u&/g" demo
AAA
BBBB
AABBCCDD
AAAAAABBBBBBCC

这行命令同等于:

$ sed 's@[a-z]@\u&@g' demo
AAA
BBBB
AABBCCDD
AAAAAABBBBBBCC

3.4 sed高级编辑命令

(1)格式

(2)一个案例+示意图演示

① 案例:倒序输出文本内容

$ cat num.txt 
One
Two
Three
$ sed '1!G;h;$!d' num.txt
Three
Two
One

② 总结模式空间与保持空间关系:

保持空间是模式空间一个临时存放数据的缓冲区,协助模式空间进行数据处理

上一篇 下一篇

猜你喜欢

热点阅读