Portál AbcLinuxu, 12. května 2025 04:37
egrep '62\.4\.[96-127]\.'tento příklad samozřejmě nefunguje, neboť vybírá na 3. pozici IP adresy znaky 9,6-1,2,7. Jak donutím grep, aby bral hodnotu jako jedno číslo 96,127 ?
awk -F. '$1==62 && $2==4 && $3>=96 && $3<=127 {print $0}'
awk -F. '$1==62 && $2==4 && $3>=96 && $3<=127'
/62\.4\.(96|97|98|...|127)/
Souhlasim ale, ze je inteligentnejsi pouzit nejaky jiny pristup, ktery s tim bude zachazet jako s cisly. Predpokladam, ze vysledek tohohle testu se bude dal zpracovavat, takze byt to na mne, udelam to cele v perlu.
echo 64.4.100.5 | awk -F . '{ exit !($1==64&&$2==4&&$3>=96&&$3<=127) }'
Vraci exit status 0/1 podle toho, jestli je IP v rozsahu, pokud bude vstup neco jineho, nez samotna IP, tak si to nejak douprav.
domena.tld 62.4.96.120 pokud bude oddělovačem tečka ("."), získáme: $1 = domena $2 = tld 62 // zde to bude dost problém $3 = 4 $4 = 96 $5 = 120
awk -F . 'BEGIN {RS=" "}; NR==2 { exit !($1==62&&$2==4&&$3>=96&&$3<=127) }'
echo 62.4.96.0 | awk -F . 'BEGIN {RS=" "}; NR==2 { exit !($1==62&&$2==4&&$3>=96&&$3<=127) }'nevrací nic ideální by bylo vypsat celý řádek, ve kterém část odpovídá rozsahu
echo domena.tld 62.4.125.1 | awk ' { split($2, a, "\\."); print a[1], a[2], a[3], a[4] }'
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.