Linux三剑客之sed


一.sed简介

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

二.sed的格式

sed [参数] '处理规则' [操作对象]

三.参数

    -e : 允许多项编辑
    -n :  取消默认输出
    -i :  就地编辑
    -r :  支持拓展正则
    -f :  指定sed匹配规则脚本文件

四.定位

1.数字定位法

[root@liuwang ~]# sed '3d' 100.txt

2.正则定位法

[root@liuwang ~]# sed '/^3/d' 100.txt

3.数字和正则定位法

[root@liuwang ~]# sed '3,/^g/d' 100.txt

4.正则正则定位法

[root@liuwang ~]# sed '/^r/,/^3/d' 100.txt

五.sed 编辑模式

    a : 在当前行后添加一行或多行
        sed '2aboyfriend' 100.txt 

c :用新文本修改(替换)当前行
        [root@liuwang ~]# sed '3cboyfriend' 100.txt

i : 在当前行之前,插入文本(单独使用时)
        [root@liuwang ~]# sed '3iboyfriend' 100.txt

r : 在文件中读内容
[root@liuwang ~]# sed '3rboyfriend' 100.txt

w : 将指定行写入文件
        [root@liuwang ~]# sed '3w 7.txt' 100.txt

y : 将字符转换成另一个字符
        [root@liuwang ~]# sed '2y/rewq/1111/' 100.txt

s : 将字符串转换成另一个字符串(每一行只替换一次)
        [root@liuwang ~]# sed 's/rewq/1111/' 100.txt

g : 全部执行
        [root@liuwang ~]# sed 's/qwer/1111/g' 100.txt

i : 忽略大小写(跟 s 模式一起使用时)
    
& :代表前面匹配到的内容

相关