01.三剑客命令说明-sed命令
sed - stream editor for filtering and transforming text
可以进行文本编辑 文本过滤处理
主要用于处理文本文件,对一些配置文件进行编辑修改
02. sed命令使用方式
标准格式 sed [选项] [sed指令] [文件信息]
工作原理:
01. 按行进行过滤
02. 将过滤出来的一行内容放入到模式空间中
03. 会有默认输出(-n)
04. 一行处理完会继续处理下一行
03. sed命令使用方法
环境准备:
cat >person.txt< 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO 105,feixue,CIO EOF 根据字符内容进行过滤 sed -n '/Alex/p' person.txt 103,Alex,COO 根据行号信息进行过滤 sed -n '3p' person.txt sed -n '4p' person.txt sed -n '2,4p' person.txt 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO sed -n '/oldboy/,/yy/p' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO sed -n '/Alex/p' person.txt sed -n '/feixue/p' person.txt sed -n '/Alex/p;/feixue/p' person.txt sed -n '3p;6p' person.txt echo oldboy >>/oldboy.txt sed '4a oldgirl' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO oldgirl 105,feixue,CIO 106,yy,CFO sed '/Alex/a oldgirl02' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO oldgirl02 104,yy,CFO 105,feixue,CIO 106,yy,CFO sed '4a oldgirl01\noldgirl02' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO oldgirl01 oldgirl02 105,feixue,CIO 106,yy,CFO sed '$a oldgirl01\noldgirl02' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO 105,feixue,CIO 106,yy,CFO oldgirl01 oldgirl02 说明: $符号表示最后一行信息 sed '4a oldgirl01\noldgirl02' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO oldgirl01 oldgirl02 105,feixue,CIO 106,yy,CFO sed '4i oldgirl01\noldgirl02' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO oldgirl01 oldgirl02 104,yy,CFO 105,feixue,CIO 106,yy,CFO sed '3,4d' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 105,feixue,CIO 106,yy,CFO sed -r '/Alex|feixue/d' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 104,yy,CFO 106,yy,CFO sed -n '/^$/!p' person.txt 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO 105,feixue,CIO 106,yy,CFO 说明: 利用!p表示对输出的内容信息进行取反 sed -ri.bak '/Alex|feixue/d' person.txt cat person.txt 101,oldboy,CEO 102,zhaoyao,CTO 104,yy,CFO 106,yy,CFO -i 参数使用注意事项 01. -i参数一定编写在所有参数之后 02. -i参数在使用使用一定不能和-n参数结合使用 一种情况: -i参数写到所有参数的前面了 sed -i.bakr '/Alex|feixue/d' person.txt 二种情况: -i参数会将屏蔽输出的信息放入到文件中 sed -rn '7s#(.*=).*#\1disabled#gp' /etc/selinux/config SELINUX=disabled sed -rni.bak '7s#(.*=).*#\1disabled#gp' /etc/selinux/config cat /etc/selinux/config SELINUX=disabled sed -e '3c oldboy' -e '6c oldgirl' person.txt 101,oldboy,CEO 102,zhaoyao,CTO oldboy 103,Alex,COO 104,yy,CFO oldgirl 105,feixue,CIO 106,yy,CFO 说明: c 表示多指定行进行整体修改 -e 可以用于识别sed命令中的多个指令 根据内容进行修改调整: a 按照指定行进行修改调整 sed '4s#Alex#goodman#g' person.txt sed '/103/s#Alex#goodman#g' person.txt b 利用正则符号进行匹配,再做调整(后向引用前向) echo 123456|sed -r 's#(..)(..)(..)#<\1><\2><\3>#g' <12><34><56> echo 123456|sed -r 's#([0-9]{2})#<\1>#g' <12><34><56>1) 查询信息单行查找内容
多行查找内容
按照行号信息进行过滤
按照内容信息进行过滤
过滤不连续的多行信息(按照过滤的字符)
过滤不连续的多行信息(按照行号)
2) 增加信息
如何向文件指定行的后面增加信息
如何向文件指定行的前面增加信息
3) 删除信息
按照行号进行单行或多行删除
按照信息进行单行或多行删除
真正对文件内容进行修改编辑 加上-i参数
3) 修改信息
单行进行整体修改
多行进行整体修改
单行或多行进行部分内容修改