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
|