Soubor s IPckama a razeni v shellu

Jan Kasprzak kas na fi.muni.cz
Čtvrtek Duben 14 21:29:31 CEST 2005


Petr Vojnar wrote:
: mam soubor, kde je na kazdem radku jedna IP adresa a chtel bych ho pomoci
: beznych prostredku (~ sort, sed atd.) zpracovat tak, aby napr. prikaz cat
: soubor-s-ip | ... vypsal serazene IP.
: 
: Delal jsem nejake pokusy se sortem a sedem, ale v nejlepsim pripade to
: seradilo jen prvni cast IP. :-( Proste treba 158.194.2.1 je az za
: 158.194.100.1 atd.

	No, trik je v prevedeni 158.194.2.1 -> 158.194.002.001 a pak uz
lze tridit lexikograficky. TIMTOWTDI, jedna z moznosti je treba

while IFS=: read ip1 ip2 ip3 ip4
do
	ip1=`printf "%03d" $ip1`
	ip2=`printf "%03d" $ip2`
	ip3=`printf "%03d" $ip3`
	ip4=`printf "%03d" $ip4`
	echo "$ip1.$ip2.$ip3.$ip4"
done < soubor | sort | sed 's/^0*\([^.])/\1/;s/\.0*\([^.]\)/.\1/g'

(nevyzkouseno, mozna jsou tam nejake drobne preklepy; dulezita je hlavni
myslenka). Nemate-li printf(1), pouzijte totez v Perlu/AWK.

-Yenya

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/   Czech Linux Homepage: http://www.linux.cz/ |
> Whatever the Java applications and desktop dances may lead to, Unix will <
> still be pushing the packets around for a quite a while.      --Rob Pike <


Další informace o konferenci Linux