正则表达式是由普通字符与元字符组成
普通字符包括大小写字母、数字、标点符号及一些其他符号
元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
注: egrep, awk使用(n}、{n,}、(n,m}匹配时"{}"前不用加"\"
\ | 转义字符,用于取消特殊符号的含义 | 例: \!、\n、\s等 |
^ | 匹配字符串开始的位置 | 例: ^a、^the、^#、^[a-z] |
$ | 匹配字符串结束的位置 | 例: word$、^$匹配空行 |
. | 匹配除\n之外的任意的一个字符 | 例: go.d、g..d |
* | 匹配前面子表达式0次或者多次 | 例: goo*d、go.*d |
[list] | 匹配list列表中的一个字符 | 例: go[ola]d, [abc]、[a-z]、[a-z0-9]、[0-9]匹配任意一位数字 |
[^list] | 匹配任意非list列表中的一个字符 | 例: [^0-9]、[^A-Z0-9]、[^a-z]匹配任意一位非小写字母 |
\{n\} | 匹配前面的子表达式n次 | 例: go\{2\}d. ‘[0-9]\{2\}‘匹配两位数字 |
\{n,\} | 匹配前面的子表达式不少于n次 | 例: go\{2,\}d, ‘[0-9]\{2,\}‘匹配两位及两位以上数字 |
\{n,m\} | 匹配前面的子表达式n到m次 | 例: go\{2,3\}d. ‘[0-9]\{2,3\}‘匹配两位到三位数字 |
+ | 匹配前面子表达式1次以上 | 例: go+d,将匹配至少一个o,如god, good, goood等 |
? | 匹配前面子表达式0次或者1次 | 例: go?d,将匹配gd或god |
() | 将括号中的字符串作为一个整体 | 例: g(oo) +d,将匹配oo整体1次以上,如good, gooood等 |
| | 以或的方式匹配字条串 | 例: g(oo|la)d,将匹配good或者glad |
^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$
#!/bin/bash for ip in `cat ip.txt` do count=$(ping -c 5 -i 2.5 -w 3 $ip | grep icmp_seq | wc -l) delay=$(ping -c 5 -i 0.5 -w 3 $ip | grep from |cut -d ‘=‘ -f4 |cut -d ‘.‘ -f1) if [ $count -lt 5 ];then echo "$ip packet lost" >> /opt/test.txt fi for i in $delay do if [ $i -ge 50 ];then echo "$ip delay" >> /opt/test.txt break fi done done
#!/bin/bash switch() { ip=$1 num=$(echo $ip | tr ‘.‘ ‘ ‘) for a in $num do i=256 for b in {1..8} do i=$[$i/2] A=$[$a-$i] if [ $A -lt 0 ];then echo -n 0 else echo -n 1 a=$[$a-$i] fi done echo -n ‘.‘ done } IP=$1 res=$(switch $IP) echo ${res%.*}
原文:https://www.cnblogs.com/Rui-Lin/p/15047801.html