shell脚本编程(六)sed命令

sed(Stream Editor),流编辑器。对标准输出或文件逐行进行处理

语法格式(类似grep):sed [ -nefri ] “pattern command”

常用选项

常用编辑命令

注意s后面的分隔符不一定是/也可指定为其他,例如@ 。 s@aa@bb@g

第一种形式:

sed [option] “pattern command ” file

vim 1.txt

1、默认sed会自带p命令、在次用p会打印两边

p会-n连用

2、多次处理用-e

3、处理表达式保存到文件执行 -f

4、使用扩展表达式 -r

5、直接修改文件 -i

结合 s命令用 s/love/like/g;p这种格式。命令连接处用;隔离

第二种形式:

stdout #标准输出 | sed [option] “pattern command”

send中的pattern详解

模式:10command 匹配到第10行

模式:5,6comand 匹配从第5行开始,到第6行结束

模式:4,+2comand 匹配从第4行开始,到第6行结束

模式:/pattern1/command 匹配到pattern1的行

模式:/pattern1/,/pattern2/command 匹配到pattern1行开始,到匹配到pattern2的行结束

模式:21,/pattern1/command 匹配从第21行开始,到匹配到pettern1行结束

模式:/pattern1/,5command 匹配到pattern1的行开始,到文本开始的第5行匹配结束

结果是如果要求所在行数没有符合要求,继续向下匹配成功后返回当前行

sed编辑命令详解

编辑命令:d 删除

编辑命令:a 追加内容行

编辑命令:i 之前的追加

编辑命令:r 将后面指定文件内容追加到匹配到的行后面

编辑命令:w将匹配到的行内容另存到其他文件中

编辑命令:s 修改

修改1.txt、改成如下内容

例子

编辑命令:= 显示行号

方向引用

& 给PHP后面加上$ 。&等同于\0

在脚本中用sed命令使用变量替换一定要用双引号、否则会把这个当成字符串

如果使用单引号、需要拼接

sed查找特定内容

配置文件代码

注意第一个配置行【myisamchk】的配置项由于有空格、统计出了3个配置

sed删除特定内容

练习例子

cp /etc/passwd ./

实际案例

nginx.conf

删除#为开头的注释行

打印出内容

删除#注释和空行

sed修改特定的内容

练习例子

sed追加内容用法

a 在匹配行后面追加

i 在匹配行前面追加

r 将后面指定文件内容追加到匹配到的行后面

w 将匹配到的行内容另存到其他文件中

发表评论