python - 我如何用现金编写正则表达式以获得 162-175 范围内的 ips 和环回地址
问题描述
嘿,我正在尝试编写一个正则表达式 bash 表达式来获取以 127 开头的地址和介于 162-175 之间的地址,谁能纠正我的错误
sed -n 's/\([0-9]\{3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' ips.txt | grep ip | sed 's/ip//'| sort | uniq | cut -d " " -f 1
解决方案
awk 可能是一个更好的工具:
awk '{
if ( match($0,/([0-9]{1,3}\.){3}[0-9]{1,3}/)) {
split(substr($0,RSTART,RLENGTH),map,".");
if ( map[1] == 127 || ( map[1] >= 162 && map[1] <= 175 ) ) {
print $0
}
}
}' file
一个班轮:
awk '{ if ( match($0,/([0-9]{1,3}\.){3}[0-9]{1,3}/)) { split(substr($0,RSTART,RLENGTH),map,".");if ( map[1] == 127 || ( map[1] >= 162 && map[1] <= 175 ) ) { print $0 } } }' file
对于每一行,使用 awk 的 match 函数对 ip 地址进行模式匹配。使用 awk 的 split 函数获取该 IP 地址的第一个元素,该元素位于数组映射的第一个索引中。检查此 map[1] 值是否等于 127 或介于 162 和 175 之间。如果满足这些条件,则打印该行