Shell-三剑客(sed)
Shell-三剑客(sed)
Sed 是Linux平台下的轻量级流编辑器.一般处理文本文件.
需要注意的是vim也是处理文本文件的工具,它们俩最大的区别在于:
sed不需要像vim一样打开文件,而是可以在脚本里面直接操作文档,所以大家将会发现它在Shell脚本里的使用频率是很高的.
Sed的语法格式如下:
sed [-nefri] [n1,n2] 动作
第一部分: [ - n e f r i ]
-n 是安静模式,只有经过sed处理过的行才会显示出来,其他不显示
-e 表示直接在命令行模式上进行sed的操作.貌似是默认选项,不用写
-f 将sed的操作写在一个文件里,用的时候 -f filename 就可以按照内容进行sed操作
-r 表示使sed支持扩展正则表达式
-i 表示直接修改读取的文件内容,而不是输出到终端.
第二部分:[n1,n2]
[n1,n2]表示选择要进行处理的行,不是必需的 10,20 表示在10~20行之间处理.
第三部份:动作 (动作中的参数 a c d i p s g )动作最好用' '括起来,防止因空格导致错误
a 表示添加,后接字符串,添加到当前行的下一行
c 表示替换 后接字符串 用它替换n1到n2之间的行
d 表示删除符合模式的行 它的语法为 sed '/regexp/d' / / 之间是正则表达式 模式在d前面 d后面一般不接任何内容
i 表示插入 后接字符串 添加到当前行的上一行
p 表示打印 打印选择的莫个数据 通常与-n(安静模式)一起使用
s 表示搜索 还可以替换 类似于vim里的搜索替换功能
例如: "1,20s/old/new/g" 表示将1~20行的old替换为new g在这里表示处理这一行所有匹配的内容
sed的基础实例如下:
实例1 d 删除
显示passwd内容 将2~5行删除后显示(注意sed只是输出终端内容,并没有修改文件本身内容.)
实例2 a 添加
在第2行后面的一行加上"Hello,world"字符串,命令如下所示
实例3 续航符 \
在第2行后面一行加上俩行字,例如: "this is first line !" 和"this is second line !"
这里使用了续航符 \
实例4 替换 c
将第2~5行的内容替换成"I am Macy"
实例5