- 论坛徽章:
- 32
|
本帖最后由 yestreenstars 于 2012-11-10 01:38 编辑
Try:- #!/bin/bash
- while read line
- do
- netmask=$(sed -r 's/.*\/(.*);/\1/' <<< $line)
- start=$(sed -r 's/(.*)\/.*/\1/' <<< $line)
- if [[ "$netmask" -lt "8" ]]; then
- end=$(awk 'BEGIN{FS=OFS="."}{print $1+2^(8-'$netmask')-1,255,255,255}' <<< $line)
- elif [[ "$netmask" -lt "16" ]];then
- end=$(awk 'BEGIN{FS=OFS="."}{print $1,$2+2^(16-'$netmask')-1,255,255}' <<< $line)
- elif [[ "$netmask" -lt "24" ]];then
- end=$(awk 'BEGIN{FS=OFS="."}{print $1,$2,$3+2^(24-'$netmask')-1,255}' <<< $line)
- else
- end=$(awk 'BEGIN{FS="[./]";OFS="."}{print $1,$2,$3,$4+2^(32-'$netmask')-1}' <<< $line)
- fi
- echo $start-$end >> b.txt
- done < a.txt
复制代码 |
|