Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: sum and sort with bash


  • Subject: Re: lug-bg: sum and sort with bash
  • From: Peter Pentchev <roam@xxxxxxxxxxx>
  • Date: Fri, 22 Oct 2004 12:53:17 +0300

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	roam@xxxxxxxxxxx    roam@xxxxxxxx    roam@xxxxxxxxxxx
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: pgpRAsNiNvX9Z.pgp
Description: PGP signature



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.