sed
-
概念:
文件处理编辑命令
过滤、替换(修改)、增删改查
/舞台/
字符必须加//舞台,数字最好也加上
-
说明:
擅长对文件信息进行编辑
擅长对行进行操作 -
原理:
按照每行查找信息,找出符合条件的信息。
处理信息会在模式空间(内存)中完成,差找出信息后执行指令
找什么东西,做什么事情 -
语法:
sed [参数] ‘查找内容 指令’ 文件 -
参数:
-p
打印
-n
取消默认输出
sed '7p' sed_test.txt -n
查找第7行信息打印
sed '1,7p' sed_test.txt -n
查找第1行至第7行信息打印(查找连续行信息)
sed '7,$p' sed_test.txt -n
查找第7行至尾行信息打印
$:最后一行
sed '2p;4p' sed_test.txt -n
查找2和4行信息打印(查找不连续行信息)
-r
识别扩展正则
sed '/wy|dyp/p' sed_test.txt -nr
查找出含有wy和dyp的行
-i
修改文件内容
-i.bak
后边跟字符,删除前备份
ps:-i后不能跟其他参数,可以加在前边
-i不要和-n一起使用
sed '7d' sed_test.txtt -i
删除第7行
sed '7d' sed_test.txt -i.bak
删除第7行并备份sed_test.txt.bak
-e
可以执行多条命令
sed '3ad\ny\np' sed_test.txt -i
添加多行
sed -e '1iw' -e '7ay' sed_test.txt -i
在第1行前插入w,在第7行后插入y。
- 指令
查看
p
输出显示指定信息
sed '7p' sed_test.txt -n
显示第7行信息
删除(delete)
d
删除指定信息
sed '7d' sed_test.txt -i
清除第7行信息
增加
a(append)
添加指定信息在相应行的后面
sed '7awy' sed_test.txt -i
在第7行后插入wy
i(insert)
插入指定信息在相应行的前面
sed '7awy' sed_test.txt -i
在第7行前插入wy
c(replace)
将一行信息进行替换修改
sed '7cwy' sed_test.txt -i
将第7行信息替换为wy
修改
s###g
s
替换指定信息
g
全局替换信息
sed 's#wy#dyp#g' sed_test.txt
将wy替换为dyp
后项引用前项
echo "wy" | sed 's#(.*)#<\1>#g' -r
输出wy,.*匹配echo输出的wy,再用\1引用()匹配的wy,最后替换为<wy>。
echo "wy" | sed 's#(.)(.)#<\1><\2>#g' -r
输出wy,第一个.匹配一个字符w,第二个.匹配一个字符y,再\1引用第一个(),\2引用第二个()。
- 练习
获取网卡eth0的IP地址
ip a s | sed "3p" -n | sed 's#(^.*t)(.*)(/.*$)#\2#g' -r
-r
识别正则符号
第一步:查看网卡
第二步:提取第3行
第三步: 将任意开头t结尾为第一引用点,
再从t后匹配任意字符为第二引用点,
再以/开头任意结尾为第三引用点,
最后提取第二引用点的信息就是IP了。
- 实例
sed '3p' wy.txt -n
查找第三行信息打印
-p 打印
sed '2,4p' wy.txt -n
查找2至4行信息打印(查找连续行信息)
sed '2,$p' wy.txt -n
查找2至尾行信息打印
$:最后一行
sed '2p;4p' wy.txt -n
查找2和4行信息打印(查找不连续信息)
sed '/wy/p' wy.txt
查找wy信息打印
sed '7d' wy.txt -i
sed '7d' wy.txt -i.bak
7:行数
d:删除
-i:修改文件内容
后边跟字符,删除前备份
ps:-i后不能跟其他参数,可以加在前边
-i尽量不和-n一起使用
sed '3ad\ny\np' wy.txt -i
添加多行
sed -e '2iw' -e '3ay' wy.txt -i
-e:可以执行多条命令
sed ‘7c wy’ wy.txt
将第7行清除,写入wy
c:替换整行
ip a s eth0|sed -nr '3s#^.*et (.*)/24.*$#\1#gp'
-n:取消默认输出
-r:使用扩展正则