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)把多行转为一行,换行用‘,’替换