正则
Sed没有grep好用,但是可以替换,简单的说,grep用于查找,sed用于替换比较合适
1)Sed过滤出来的信息没有颜色显示
例如sed -n '/root/'p 1.txt 过滤出来对应的
文章图片
2)sed同样支持. * 或者+号等
例如sed -n '/r*t/'p 1.txt
文章图片
sed -nr '/o+t/'p 1.txt找出含有t前有o的打印
文章图片
(3)指定要过滤出特定的字符出现的次数
例如配置两个o出现sed -nr '/o{2}/'p 1.txt
文章图片
(4)稍微复杂的过滤出字符串root或者字符串111
中间有|隔离开来sed -nr '/root|111/'p 1.txt
文章图片
这里可以使用-e参数,效果是一样的
文章图片
稍微注意的是p携带在单引号里面或者外面都可以的,而如果两个都匹配,则打印两次
(5)可以打印指定的行
例如打印第14行sed -n '14p' 1.txt
文章图片
sed -n '3,5p' 1.txt//打印3-5行
文章图片
sed-n'3,$'ptest.txt //打印第3行到最后一行。
(6)其他应用
sed -n '/^s/'p 1.txt //打印出以s开头的行。
文章图片
sed -n'/in$/'p1.txt //打印出以in结尾的行
文章图片
sed -n'/.+root.+/'p1.txt //打印出root字符串在行中间的行。
文章图片
(7)-I匹配时不区分大小写
文章图片
(8)删除指定的行使用d参数
sed '3'd 2.txt
文章图片
(9)指定性删除
sed -i '/abc/'d 2.txt
特别注意,这个删除是不可逆的,删除前一定要备份好数据
文章图片
不加-i则不会删除掉对应的文件
这里其实sed也是只查看对应的,但是没有真正的删除
文章图片
(10)替换
替换字符串,和vim非常的像
sed '1,10s/root/toor/g' 1.txt
文章图片
sed -r '1,5s/ro+/b/g' test.txt //将1-5行中的ro+替换为b ,加上-r选项就可以不使用转义字符
文章图片
删除所有的英文字母
head 1.txt |sed 's/[a-zA-Z]//g'
文章图片
调换2个字符的位置
head |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'//sed命令支持管道符,使用小括号把要替换的字符打包成一个整体,这里是:分割
文章图片
添加指定内容,例如
sed's/^.*$/123&/' 1.txt给行首添加123
.*代表任意
文章图片
【正则-sed】