Shell 正则表达式与sed实例

1.04101802001-04101802043正则表达式匹配

egrep "^041018020(0[1-9]|[1-3][0-9]|4[0-3])$"

^……$:以……开始到……结束,固定匹配长度。

2.ipv4地址,邮箱地址

1)ipv4地址

egrep "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"

前面规定数字的范围在250-255或200-249或0-199,然后前三组后面都带有点,所以进行3次重复匹配,后面直接规定数字的范围后就可以匹配到符合规定的ipv4地址了。

 2)邮箱地址

egrep -o "^([a-zA-Z0-9_\.\+\-]+)@([a-zA-Z0-9_\.\+\-]+)\.([a-zA-Z]{2,5})$")

邮箱地址格式一般为:username@hostname.顶级域名。

所以前面的username匹配所有可能的条件,然后加@后面的hostname。

顶级域名一般为大于两个字符不超过五个字符的英文单词,所以重复匹配2到5次的所有大小写英文单词。

下面写了一个脚本,看一下执行的结果如何:

read -p "please input your Email:" Email
email=$(echo $Email | egrep -o "^([a-zA-Z0-9_\.\+\-]+)@([a-zA-Z0-9_\.\+\-]+)\.([a-zA-Z]{2,5})$")
if [ ! -n "$email" ]
then
  echo "your Email is wrong"
else
  echo "your Email is :$email"
fi

[root@localhost 20220827]# bash Email.sh 
please input your Email:13133313@163.com             
your Email is :13133313@163.com
[root@localhost 20220827]# bash Email.sh 
please input your Email:cqucc_xzl.19107507@cqucc.com
your Email is :cqucc_xzl.19107507@cqucc.com

所以可以看能够检测并匹配到所有符合条件的邮箱地址。

3.sed命令使用: 地址定界和编辑命令的使用

1)d命令 删除匹配到的行

 2)i命令 表示在匹配到的行之前追加内容

 3)c命令 表示把匹配到的行和给定的文本进行交换

 4)p命令 打印当前模式空间内容

 -n 代表只输出sed处理后的内容

5)s/pattern/string 替换内容

6)指定文件中哪一行进行替换,利用#(数字)

7)删除文件中第4行到末尾行中所有的hello

 8)删除每一行的第一个单词

 9)打印第一行

 -e 表示直接在命令行模式上进行sed的动作编辑,多个子命令之间也可以用分号隔开

10)打印行号

 11)只打印1和5行

 12)把多行转为一行,换行用‘,’替换

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值