On Fri, Oct 22, 2004 at 12:29:44PM +0300, Georgi Genov wrote:
> Ivailo Ivanov wrote:
> 
> >                 Zdraveite,
> >Imam fail sas sledata struktura:
> >
> >source-ip-1 dest-ip bytes digit1 digit2 digit3
> >source-ip-2 dest-ip bytes digit1 digit2 digit3
> >source-ip-1 dest-ip bytes digit1 digit2 digit3
> >source-ip-1 dest-ip bytes digit1 digit2 digit3
> >-----------------------
> >source-ip-n dest-ip bytes digit1 digit2 digit3
> >
> >Iskam da sortiram source ip-ta ta spriamo sumarnite
> >bytes ot vsiako ot tiah. Triabva da se polu4i neshto
> >takova, primerno:
> >
> >1. source-ip-1 10929Mb
> >2. source-ip-6 1234Mb
> >3. sourceip-24 125Mb
> >--------------------
> >I taka natatak....
> >
> >
> >
> > 
> >
> Ето ти един скрипт за подреждане по големина на числа.

Още една идейка: за подреждане по големина на числа можеш да ползваш и
стандартния sort, като му кажеш -n :)  Ако искаш да подреждаш по
големина IP адреси, които се състоят от четири числа едно след друго,
разделени с точка, можеш да пробваш примерно (ако IP адресът е първото
нещо на реда):

        sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4 traf.txt

Това предполага, че използваш POSIX-съвместим sort или нещо, което има
съвместими с него command-line параметри.  Това на практика покрива
всички версии на sort, с които ще се сблъскаш тия дни по различните
операционни системи, поне що се отнася до сортиране на числа, задаване
на разделител (-t.) и задаване на ключови полета (-k...).

Ако имаш файл, редовете на който започват с числа, и искаш да ги
сортираш по големина (примерно изходът от du), тогава просто го
прекарваш през най-обикновен sort -n:

  du -a | sort -n

Ако имаш поредица от числа в някакъв низ и ги искаш сортирани по
големина, ще трябва да се направи още нещо, за да ги разбишкаш първо по
едно на ред (първият xargs), да ги сортираш, и после, ако искаш, да ги
събереш обратно на един ред (вторият xargs).  И в двете извиквания на
xargs се използва това, че ако не му подадеш команда за изпълнение, се
използва по подразбиране echo:

  num="11 9 78 15 3 84"
  sorted=`echo $num | xargs -n 1 | sort -n | xargs`

Ти беше прав, че скриптовият език на bash може да се научи за не повече
от ден-два.  Следващата стъпка е човек да се научи да използва
инструментите, които идват с всяка Unix-like операционна система - това,
което Денис Ричи навремето беше нарекъл 'the programmer's toolbox' -
така обикновено е доста по-ефективно :)

Поздрави,
Петър

-- 
Peter Pentchev  [EMAIL PROTECTED]    [EMAIL PROTECTED]    [EMAIL PROTECTED]
PGP key:        http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
I had to translate this sentence into English because I could not read the original 
Sanskrit.

Attachment: pgpeqz7MKVpoB.pgp
Description: PGP signature

Reply via email to