1.sed是一款字符流编辑工具(行编辑工具) 常用于处理配置文件
按照每行中的字符进行处理操作
sed命令作用说明:
1). 擅长对行进行操作处理
2). 擅长将文件的内容信息进行修改调整/删除
2.常见指令/参数
sed命令的指令信息
p print 输出信息
i insert 插入信息,在指定信息前面插入新的信息
a append 附加信息,在指定信息后面附加新的信息
d delete 删除指定信息
s substitute 替换信息 s###g(全局替换)
c 替换修改指定的一整行信息
sed命令的参数信息
-n 取消默认输出
-r 识别扩展正则
-i 真实编辑文件(将内存中的信息覆盖到磁盘中)
-e 识别sed命令多个操作指令
注意:n和i不能连用 会把内容给清空
3.sed运行原理(读取到内存中,默认按行处理,每行都会输出)
4.增
在文件第一行添加信息: sed '1i信息' 文件路径
在文件最后一行添加信息: sed '$a信息' 文件路径
demo: 在有oldboy行的前面添加oldgirl 后面添加olddog信息
sed -e '/oldboy/ioldgril' -e '/oldboy/aoldgog' test.txt
在文件中添加多行信息 sed '$a100\n101' text.txt //利用\n
企业中编写配置文件:
IPaddress=10.10.10.1
mask=255.255.255.0
gateway=10.10.10.254
sed '$aIPaddress=10.10.10.1\nmask=255.255.255.0\ngateway=10.10.10.254' 文件名称
5.删除
删除第三行信息 sed '3d' text.txt
删除文件二到六行的信息 sed '2,6d' text.txt
删除第三和第六行 sed '3d;6d' text.txt
删除文件中带有oldboy的信息 sed '/oldboy/d' test.txt
问题: 如何利用sed命令取消空行显示
1.sed -n '/./p' text.txt
2.sed '/^$/d' person.txt
3.sed -n '/^$/!p' person.txt
6.改
sed 's#原内容#修改后内容#g' 文件信息
sed 's#oldgirl#oldboy#g' test.txt
sed 's#()#\n#g' 文件信息 后项引用前项进行替换修改
难点:利用sed取出ip地址
ip a s eth0|sed -rn '3s#^.*net (.*)/24.*#\1#gp'
补充: 修改文件内容直接进行自动备份
sed -i.bak 's#oldboy#oldold#g' person.txt
补充02: 在真实替换文件内容时候,一定不能让n和i参数同时出现
[root@oldboyedu ~]# sed -ni 's#Alex#aaaa#gp' person.txt
103,aaaa,COO
[root@oldboyedu ~]# cat person.txt
103,aaaa,COO
说明: ni和参数同时使用,会将文件内容进行清空
批量修改文件的扩展名称 将oldboyxx.txt扩展名修改为oldboyxx.jpg
ls oldboy*.txt|sed -r 's#(.*)txt#mv & \1jpg#g' | bash
批量重命名专业命令: rename
rename 需要修改的内容 改成什么 文件地址
rename txt jpg oldboy.txt
7.查
查询单行 sed -n '3p' person.txt //不加-n会输出所有 -n取消默认输出
多行(连续) sed -n '4,6p' person.txt
多行不连续 sed -n '3p;6p' person.txt
根据文件内容的信息进行查询
sed -n '/oldboy/p' person.txt
输出多行内容
sed -n '/oldboy/,/Alex/p' person.txt
输出多行内容(不连续)
sed -n '/oldboy/p;/Alex/p' person.txt
8. 文件中添加内容方法:
01. vim/vi
02. cat >>xxx<<EOF .. EOF
03. echo -e "xxx\nxxx"
04. sed 'na/i xxxx\nxxxx\nsxxxx'