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

 

начало

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

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

семинари ...

документи

как да ...

 

 

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

Re: [Lug-bg] Въпрос за bash скриптче.


  • Subject: Re: [Lug-bg] Въпрос за bash скриптче.
  • From: Peter Pentchev <roam@xxxxxxxxxxx>
  • Date: Tue, 9 Jun 2009 13:50:07 +0300

On Tue, Jun 09, 2009 at 01:04:10PM +0300, Kristian Kirilov wrote:
> Damyan Ivanov wrote:
> > -=| Kristian Kirilov, Tue, Jun 09, 2009 at 12:35:00PM +0300 |=-
> >   
> >> Здравейте, имам следния резултат
> >>
> >> 5001 1001
> >> 4001 1002
> >> 5002 102
> >> 5003 1032
> >> 5004 1011
> >> 121 1000
> >> 12345 1008
> >> 1234 1010
> >>
> >> В този случай как мога да направя условие което да сравнява първата 
> >> колона с числото 5000, и тя го надвишава числото от 2-рата колона на 
> >> същия ред да се запише в произволен файл.
> >>
> >> Т.е. изхода трябва да излгежда нещо от сорта:
> >>
> >> 1001
> >> 102
> >> 1032
> >> 1011
> >> 1008
> >>     
> >
> > ---------------------------
> > #!/bin/sh
> >
> > while read a b; do
> >     if [ $a -gt 5000 ]; then
> >         echo $b
> >     fi
> > fi
> > ---------------------------
> >
> > script < входен-файл > изходен-файл
> >
> >   
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Lug-bg mailing list
> > Lug-bg@xxxxxxxxxxxxxxxxxx
> > http://linux-bulgaria.org/mailman/listinfo/lug-bg
> 
> debian-work:~# cat iptables_out
> 27 5001 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1001 MARK 
> xset 0x1/0xffffffff
> 21 4001 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1002 MARK 
> xset 0x1/0xffffffff
> 27 5002 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 owner UID match 102 MARK 
> xset 0x1/0xffffffff
> 27 5003 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1032 MARK 
> xset 0x1/0xffffffff
> 27 5004 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1011 MARK 
> xset 0x1/0xffffffff
> 21 121 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1000 MARK 
> xset 0x1/0xffffffff
> 21 12345 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1008 MARK 
> xset 0x1/0xffffffff
> 21 1234 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1010 MARK 
> xset 0x1/0xffffffff

Ааааааа, чакай сега, това е доста по-различно от това, което беше
описал първоначално :)  Не беше казал, че нататък по реда има
каквото и да е друго - а това е важно за простичкия shell-скрипт
(не bash-скрипт), който Дамян беше дал :)

Какво точно искаш да извеждаш тук?  Да сравняваш числата 5001, 4001,
5003, 12345 и 1234 с 5000 ли?  И да извеждаш числата 21, 27?
Или да извеждаш цялото правило "MARK all" и т.н.?

Ако искаш да сравняваш 5001 с 5000 и да извеждаш 21, пробвай това:

while read a b rest; do
	if [ "$b" -gt 5000 ]; then
		echo "$a"
	fi
done

Или awk '$2 > 5000 { print $1 }' :)

Ако искаш "по-голямо или равно", за шела е -ge вместо -gt, а за
awk - >= вместо >

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

-- 
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
"yields falsehood, when appended to its quotation." yields falsehood, when appended to its quotation.

Attachment: pgpRhx7g30LYE.pgp
Description: PGP signature

_______________________________________________
Lug-bg mailing list
Lug-bg@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg


 

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

 

линукс за българи
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.