一 . 三剑客命令sed概念说明
官方概念说明:stream editor for filtering and transforming text(字符流过滤编辑和文本字符流转换工具)
通俗概念说明:字符流编辑工具(行编辑工具)==按照每行默认处理每一行的字符信息(按照每行中的字符进行处理操作)
相比较而言vim是全屏编辑工具
二 . 三剑客命令sed作用说明
1.处理文件信息
文本文件信息(小文件)
日志文件信息(grep awk)
配置文件信息(sed)
2.处理文件方式
01.增加信息(增)
02.删除信息(删)
03.修改信息(改)
04.查看信息(查)
三 . 三剑客命令sed语法原理
1.命令语法格式
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
命令 参数 sed指令(条件+处理) 处理文件信息
sed -n '/oldboy/p' oldboy.txt
对于sed指令来说,一般是由条件和处理指令构成
2.命令执行过程
利用上述命令来对sed命令的执行过程进行文字描述:
假如我们以查找oldboy为例来说,首先sed会将第一行信息放到模式空间(内存空间),然后判断第一行是否满足条件.即是否有oldboy字符信息,此时经判断满足条件,执行sed命令p处理,打印满足条件的一行(第一行),此时判断sed是否有-n参数若没有默认输出存在于模式空间的第一行,若有-n参数则不输出到屏幕,继续读取下一行,将下一行放到模式空间,判断是否满足条件,不满足则判断是否有-n参数.没有-n参数则默认输出到屏幕上,有-n则不输出.依次类推,直到匹配到最后一行.执行完成
没有-n参数,对放到模式空间中的行默认都会输出.因为sed是按每行进行操作.所以没行都会显示
四 . 三剑客命令sed实践操作
1.查询实践
01.按照文件内容的信息查询
001.按照内容信息,输出单行内容
002.按照内容信息,输出多行内容(连续多行内容)
003.按照内容信息,输出多行内容(不连续多行内容)
02.按照文件内容的行号查询
001.根据行号信息,显示单行内容
002.根据行号信息.显示多行内容(连续)
003.根据行号信息,先睡多行内容(不连续)
2.增加实践
01.按照行号增加
001.在第n行行前添加信息
练习:在文件第一行添加信息100,oldgirl,CEO
002.在第n行行后添加信息
练习:在文件最后一行 添加信息106,olddog,UFO
02.按照信息增加
1.在查找到的内容行行前行后添加信息:在有oldboy内容的行前面添加oldgirl 后面添加 olddog信息
2.文件中添加多行信息: sed 'na/i xxxx\nxxxx\nxxxx'
企业典型应用:编写配置文件
sed '$aIPaddress=10.10.10.1\nmask=255.255.255.0\ngateway=10.10.10.254' 文件名称
3.删除实践
01.删除单行信息
02.删除多行信息(连续)
03.删除多行信息(不连续)
04.删除有oldboy信息的行
05.利用sed命令取消空行显示
1.删除有空行的行 -i参数使改动永久保存在文件中
2.将空行打印出在利用!取反
4.替换实践
1.文本替换: sed 's/原有内容/修改后内容/g' person.txt
2.后项引用前项 sed -r 's/()/\n/g' person.txt
利用sed 命令取出ip地址
练习sed中前项引用后项的用法 .找出10.0.0.255
将上述命令做整个精简
ip a s eth0|sed -n '3p'|sed -r 's/^.*net (.*)/\1/g'|sed -r 's#(.*)/24.*#\1#g'
ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g'
ip a s eth0|sed -nr '3s#^.*net (.*)/24.*#\1#gp'
3.修改文件内容直接进行自动备份
利用 -i 参数加后缀名.自动创建备份文件
练习:后缀名自定义
4.在真实替换文件内容的时候,一定不能让 n 和 i 参数同时出现
说明, n 和 i 同时出现会将文件内容覆盖.覆盖的内容是-n所显示的全部内容
5.企业应用案列
1.批量修改文件名称 sed命令替换执行
2.批量修改文件名称 rename
rename .txt .jpg oldboy*.txt
命令 文件名称需要修改的部分信息 修改成什么信息 将什么样的文件进行修改
5.扩展实践
01. 修饰指定信息取反 sed -n '/^$/!p' person.txt 显示出除空行以外的所有行
02.取出文件行号信息 sed '=' person.txt
03.执行多个相同指令 sed -n '1p;3p;5p' person.txt
五 . 三剑客命令sed课程总结
1.命令参数说明
-n 取消默认输出
-r 识别扩展正则
-i 真实编辑文件(将内存中的信息覆盖到磁盘中)
-e 识别sed命令的多个指令
2.命令的指令信息
01.增
i(insert) 行前插入信息
a(append) 行后插入信息
02.删
d(delete) 删除信息
03.改
s(subsitute) 替换信息 s///g(global全局)
c 替换指定信息的一整行信息 sed '2coldboyedu-sz-01' person.txt
04.查
p(print) 显示输出信息
3.命令的显示信息
利用行号表示条件
sed -n '4p' oldboy.txt 显示单行信息
sed -n '1,4p' oldboy.txt 显示连续多行信息
sed -n '1p;4p' oldboy.txt 显示不连续多行信息
利用信息表示条件
sed -n '/oldboy/p' oldboy.txt 显示单行信息
sed -n '/oldboy/,/oldgirl/p' oldboy.txt 显示连续多行信息
sed -n '/oldboy/p;/oldgirl/p' oldboy.txt 显示不连续多行信息