SHELL第六次作业

grep家族有三大成员分别为:

grep:支持使用基本正则表达式。

egrep:支持使用扩展正则表达式。

fgrep:不支持使用正则表达式,即所有的正则表达式中的元字符都将作为一般字符,仅仅拥有其字面 意义,不再拥有特殊意义。

grep命令根据用户指定的”pattern(过滤条件)“对目标文本逐行进行匹配检查;打印出符合条件的 行,即文本搜索工具。注:PATTERN即过滤条件指由文本字符及正则表达式元字符所编写的字符串。 grep命令的基本语法如下:grep [options] pattern [file…]

1.04101802001-04101802043正则表达式匹配。

[root@servera ~]# echo "04101802001" | egrep "^041018020(0[1-9]|[1-3][0-9]|4[0-3])$"
04101802001
[root@servera ~]# echo "04101802043" | egrep "^041018020(0[1-9]|[1-3][0-9]|4[0-3])$"
04101802043
[root@servera ~]# echo "04101802049" | egrep "^041018020(0[1-9]|[1-3][0-9]|4[0-3])$"
[root@servera ~]# 

2.ipv4地址,邮箱地址,8位强密码,url正则表达式。

QQ邮箱地址:123456789@qq.com

[root@haha ~]# echo "123456789@qq.com" | egrep "(^[1-9]*[1-9][0-9]*)@qq.com$"
123456789@qq.com

3.sed命令使用: 地址定界和编辑命令的使用,: #: d命令 i \text命令 c \text命令 #,#: p命令 #~#: s/pattern/string #,+N: s/pattern/string/g #,~N: d命令 $:d命令 /regexp/ : a \text #,/regexp/ : s/pattern/string/g /regexp/, /regexp/: s/pattern/string/g。

[root@localhost test]# cat mask.txt
hello zhangsan
hello lisi
hello wangwu
hello li'ergouzi
验证一下:
1、d删除匹配的某一行
[root@localhost test]# sed '/lisi/d' mask.txt
hello zhangsan
hello wangwu
hello li'ergouzi
 
 
3、p命令打印当前模式空间内容  
[root@localhost test]# sed -n '1,$p' mask.txt
hello zhangsan
hello lisi
hello wangwu
hello li'ergouzi
注:-n -n参数后,则只有经过sed特殊处理的那一行才会被
列出来;
'1,$p' 表示第一行开始到最后一行打印出来
4、s/pattern/string/g 替换内容
[root@localhost test]# sed  's/lisi/LISI/g' mask.txt
hello zhangsan
hello LISI
hello wangwu
hello li'ergouzi
 
 
5、指定文件中哪一行进行替换,利用#(数字)
[root@localhost test]# sed '3 s/hello/HI/' mask.txt
hello zhangsan
hello lisi
HI wangwu
hello li'ergouzi
6,删除mask.txt中第2行到末尾行中所有的hello
[root@localhost test]# sed '2,$s/hello//g' mask.txt
hello zhangsan
 lisi
 wangwu
 li'ergouzi
7、删除hello.txt中2到4行中所有的i
 
[root@localhost test]# sed '2,4s/i//g' mask.txt
hello zhangsan
hello ls
hello wangwu
hello l'ergouz
8、删除每一行的第一个单词
[root@localhost test]# sed 's/^[a-zA=Z0-9]*\>//' mask.txt
 zhangsan
 lisi
 wangwu
 li'ergouzi
 
9、打印第一行
[root@localhost test]# sed -e '1 p' mask.txt -n
hello zhangsan
 
10、打印行号:
[root@localhost test]# sed '=' mask.txt
1
hello zhangsan
2
hello lisi
3
hello wangwu
4
hello li'ergouzi
5
只打印第一行和第三行
[root@localhost test]# sed '1p;3p' mask.txt -n
hello zhangsan
hello wangwu
第二种方法:
[root@localhost test]# sed '1,5{
> 1p
> 4p
> }' mask.txt
hello zhangsan
hello zhangsan
hello lisi
hello wangwu
hello li'ergouzi
hello li'ergouzi
把多行转为一行,换行用‘,’替换
[root@localhost test]# sed ':a;N;s/\n/,/;b a' mask.txt
hello zhangsan,hello lisi,hello wangwu,hello li'ergouzi,
————————————————
版权声明:本文为CSDN博主「怨i」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xxyy121/article/details/126630009

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值