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 > > [email protected] > > 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 [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
"yields falsehood, when appended to its quotation." yields falsehood, when
appended to its quotation.
pgpV4Rle6McmW.pgp
Description: PGP signature
_______________________________________________ Lug-bg mailing list [email protected] http://linux-bulgaria.org/mailman/listinfo/lug-bg
