SHELL正则三剑客-SED

SED是什么

  • grep,过滤关键字信息数据,主要是用于差文本内的数据

  • sed,对文本数据进行编辑,修改原文件内容

  • awk,对文件数据过滤,提取,并且能实现,格式化输出

工作原理

sed参数

-n取消默认的sed软件的输出,常与sed命令的p连用
-e一行命令语句可以执行多条sed命令
-f选项后面可以接sed脚本的文件名
-r使用正则拓展表达式,默认情况sed只识别基本正则表达式
-i直接修改文件内容,而不是输出终端,如果不使用-i选项sed软件只是修改在内存中的数据,并不影响磁盘上的文件

sed增加数据

增,表示在指定行与行之间,添加新字符数据

sed增加字符命令
“a”:追加文本到指定行,记忆方法是 a的全拼是append,意思是追加
“i”:插入文本到指定行前,记忆方法是 i的全拼是insert,意思是插入
cat实现多行文本追加
[root@service ~]# cat >>my.log<<EOF
> ni
> sxx
> wyx
> EOF
[root@service ~]# cat my.log
ni
sxx
wyx
echo追加多行数据
1.多次追加
[root@service ~]# echo "你好" >> tt.log
2.使用换行符,一次添加多行数据
[root@service ~]# echo -e "hello\nworld\n你好\n" > hello.log
[root@service ~]# cat hello.log
hello
world
你好
sed添加多行数据
1.修改nginx配置文件,在第39行插入新数据 listen 81;
[root@service ~]# sed -i '39 i listen 81;' /etc/nginx/nginx.conf
2.给t1.log添加两行数据
[root@service ~]# sed -i '1 i 加油\n奥里给' t1.log
[root@service ~]# cat t1.log
加油
奥里给
i am student

sed删除字符数据

d :删除指定的行
d 命令,表示删除字符,delete意思
	sed默认是多行处理所有文本,如果不指定范围,sed默认是删除所有文本行数据。

sed命令语法

3操作第三行
3,6操作3~6行,包括3和6行
3,+5操作3行以及后五行,八行
1~2步长为2,操作1,3,5,7...行
3,$对3到末尾进行操作,包括3行
/wyx/对匹配的字符/wyx/进行操作
/wyx/,/sxx/对匹配的字符/wyx/到/sxx/进行操作
/wyx/,$对匹配字符/wyx/到结尾的行进行操作
/wyx/,+2对匹配字符/wyx/的行以及后两行进行操作

 

1.删除第三行数据
sed '3 d' t1.log
2.删除第三行到第六行
sed '3,6 d' t1.log
3.删除奇数行
sed '1~2 d' t1.log
4.删除第三行开始,向下两行
sed '3,+2 d' t1.log
5.找到game那行且删除
sed '/game/ d' t1.log
6.删除game这一行到结尾
sed '/game/,$ d' t1.log
7.删除game哪一行以及后两行
sed '/game/,+2 d' t1.log
8.删除所有行
sed 'd' t1.log
9.删除1,2,4行
sed '1 d;2 d;4 d;' t1.log
10.删除以.结尾的行
sed '/\.$/d' t1.log

打印行范围练习

#sed提供打印的命令是p
打印game那一行,以及后两行
sed -n '/game/,+2 p' t1.log

sed修改数据

替换整行命令(c)
c///把选定的行改为新的文本
替换字符(s)
sed 's/替换前字符/替换后字符/g' file

g:global全局替换

-i:选项,参数,直接修改文件

sed默认是修改内存中的模式空间数据,不会修改源文件,使用-i会修改源文件,修改磁盘上的文件数据
sed分组替换
语法:
sed软件也提供了\(\)分组功能
使用\1引用第一个括号的数据
\2引用第二个括号的数据
sed最多记住9个分组
sed查询
sed打印命令p,打印sed正则处理后的数据
并且sed默认打印模式空间,可以用-n取消
固定用法,只要实用p,就是想输出指定数据,必然用-n取消默认打印
sed其他命令  
w命令:
作用是将sed操作结果,写入到指定文件中
语法:
sed '/模式/w new_file' old_file

-e命令:
用于接上sed多个命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元气满满的热码式

感谢您的支持!我会继续努力发布

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值