Portál AbcLinuxu, 12. května 2025 13:44

Dotaz: Porovnavani cisel v BASH

16.10.2004 22:03 *Mirda* | skóre: 24 | Sedlčany
Porovnavani cisel v BASH
Přečteno: 444×
Odpovědět | Admin
Zdravim tucnaky, potrebuji poradit v BASHi. Mam soubor ve kterem jsou cisla a ja z nej potrebuji vytahnout jen ta, ktera jsou dejme tomo vetsi nez 3000.
Snazil jsem se pomoci grep, ale nenasel jsem zadny takovy parametr.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.10.2004 22:07 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Porovnavani cisel v BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
awk '{if($0>3000)print}'
16.10.2004 23:33 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Porovnavani cisel v BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ten parametr pro grep je
grep -E '^[[:blank:]]*0*([3-9][0-9]{3,}|[12][0-9]{4,})[[:blank:]]*$'
;-)
16.10.2004 23:35 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Porovnavani cisel v BASH
Aha, ostře větší než 3000. Stejně je to jedno.
16.10.2004 23:38 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Porovnavani cisel v BASH
:-)

Podle toho, jak to vlastně vypadá, by možná šlo ušetřit:
grep -E '\<0*([3-9][0-9]{3,}|[12][0-9]{4,})\>'
Ostře větší než 3000 se mi řešit nechce... (bude se to muset rozepsat na hnusné případy).
17.10.2004 02:06 *Mirda* | skóre: 24 | Sedlčany
Rozbalit Rozbalit vše Re: Porovnavani cisel v BASH
Pratele diky, script je jiz na svete. Awk bylo to co jsem potreboval.
17.10.2004 11:33 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
Rozbalit Rozbalit vše Re: Porovnavani cisel v BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
No ja prihodim jeste ciste bash reseni :

IFS=$'\n'

#ulozime si vypis souboru do pole res=(`cat "$soubor"`)

for ((i=0;i<${#res[*]};i++));do actual_file=${res[$i]} #aktualni soubor if [ $actual_file -ge 3000 ];then echo $actual_file fi done
17.10.2004 11:35 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
Rozbalit Rozbalit vše Re: Porovnavani cisel v BASH
Aaaha, to je tak kdyz se clovek nediva na nahled :) Tak jeste jednou :
IFS=$'\n'
#ulozime si vypis souboru do pole 
res=(`cat "$soubor"`)
for ((i=0;i<${#res[*]};i++));do 
  actual_file=${res[$i]} #aktualni soubor 
  if [ $actual_file -ge 3000 ];then 
    echo $actual_file 
  fi 
done
17.10.2004 12:00 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Porovnavani cisel v BASH
Kdyz uz ciste bash reseni, mozna rychlejsi by bylo tohle:
#!/bin/bash
cat soubor | while read N; do
  if (($N > 3000)); then
    echo $N
  fi
done
Nicmene, porad je to o dost pomalejsi nez reseni v awku.
17.10.2004 21:11 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Porovnavani cisel v BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Teď ještě někdo napište řešení v sendmail.cf ;-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.