sed命令概述说明:
sed命令:字符流编辑工具(行编辑工具)===按照每行中的字符进行处理操作
1擅长对行进行操作处理
2擅长将文件内容信息进行修改调整/删除
功能:
1文件中添加信息
2文件中删除信息
3文件中修改信息
4文件中查询信息
sed命令的语法信息
用法: sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...
选项
-n 显示出文件中需要的的信息(取消默认输出)
-i 写入文件(将内存里的信息覆盖到现在文件中)
-e 拼接多个sed命令操作指令
-r 识别扩展正则
指令
p print 输出信息
i insert 插入信息,在指定信息前面插入新的信息
a append 附加信息,在指定信息后面附加新的信息
d delete 删除指定信息
s substitute 替换
g 全局替换(如果不加g,就是出现的第一行)
c 替换修改指定的一整行信息
sed用于查找实例(test.txt)
123
abc
sky
cbd
haha
显示出文件中 有sky行
sed -n '/sky/p' test.txt
将有sky到yc的行显示出来多行内容(连续)
sed -n '/sky/,/yc/p' test.txt
sky
cbd
yc
根据内容信息sky和yc的,输出多行内容(不连续)
sed -n '/sky/p;/yc/p' test.txt
sky
yc
根据内容的行号,显示单行信息(显示第三行)
sed -n '3p' test.txt
根据行号信息,输出多行内容(连续)
sed -n '1,3p' test.txt
**根据行号信息,输出多行内容(不连续) **
sed -n '1p,3p' test.txt
sed添加信息方法
在文件第一行添加信息(添加好好学习)
sed -i '1i好好学习' test.txt
1i 在第一行添加
在文件最后一行添加信息(添加天天向上)
sed -i '$a天天向上' test.txt
在sky行前面添加 哈哈 在sky后面添加 嘻嘻
sed -e '/sky/i 哈哈' -e '/sky/a 嘻嘻' test.txt
添加IP信息
Ipaddress=10.0.0.123
mask=255.255.255.0
gateway=10.0.0.254
sed -i '$aIpaddress=10.0.0.123\nmask=255.255.255.0\ngateway=10.0.0.254' test.txt
sed删除信息方法
删除单行信息(删除文件中第三行信息)
sed -i '3d' test.txt
删除多行信息(删除第三行到第六行)
sed -i '2,6d' test.txt
删除有sky的行
sed -i '/sky/d' test.txt
删除第三行和第六行
sed -i '3d;6d' test.txt
取消空行显示
方法一
sed -i '/^$/d' test.txt
方法二
sed -ni '/^$/!p' test.txt
sed替换(修改信息)
替换第二行正行内容
sed -i '2csky' test.txt
sed语法
sed -i 's#原有内容#修改后内容#g' 文件名
后向引用前项替换修改
sed 's#()#\n#g' 文件信息
取出IP地址信息
第一步,获取IP的行
ip a s ens33|sed -n '3p'
inet 10.0.0.123/8 brd 10.255.255.255 scope global ens33
第二步
ip a s ens33|sed -n '3p'|sed -r 's#^.*et (.*)#\1#g'
10.0.0.123/8 brd 10.255.255.255 scope global ens33
第三步
ip a s ens33|sed -n '3p'|sed -r 's#^.*et (.*)#\1#g'|sed -r 's#(.*)/8.*#\1#g'
10.0.0.123
精简获取IP地址
ip a s ens33|sed -rn '3s#^.*net (.*)/8 .*#\1#gp'
10.0.0.123
ifconfig ens33|sed -rn '2s#^.*et(.*) net.*#\1#gp'
10.0.0.123
sed命令备份
-i 容易改错了无法恢复
sed -i.bak 's#sky#haha#g' test.txt
这样就会备份一份
批量修改文件的扩展名 将sky01.txt等 替换成sky01.jpg
ls sky*.txt|sed -r 's#(.*)txt#mv & \1jgp#g' |bash
批量重命名rename
rename .txt .jpg sky*.txt
命令 文件名需要修改的部分 修改成什么信息 将什么样的文件修改
rename .jgp .txt sky*.jpg
sky01.txt sky02.txt sky03.txt sky04.txt sky05.txt