grep na cisla

Sekcia: Programovanie 14.07.2010 | 18:25
Avatar t0mas Archlinux a ubuntu 9.10  Používateľ
Ahojte,

Mam subor v ktorom su cisla od 1 do 500, kazde cislo je na novom riadku a potreboval by som z tohto suporu vygrepovat len cisla od 200 vyssie .... a neviem si dat rady ako na to ... googlil som ale odpoved na svoju otazku som nenasiel :(

neviete ako by sa to dalo spravit?

Vdaka vsetkym ktori pomozu
Linux4ever frasier@jabbim.sk
    • Re: grep na cisla 14.07.2010 | 18:57
      Avatar Milan Dvorský debian,mint kde,android  Administrátor
      nacitaj si subor, nasledne rozbi na zaklade novych riadkov (cize crlf - t.j. \n\r), spocitaj pocet poloziek v poli, spusti cyklus, urob porovnavanie a pripadne pak printuj ... script mozno na 10 - 20 vacsinou poloprazdnych riadkov ;)
    • Re: grep na cisla 14.07.2010 | 19:00
      Avatar borg Arch, Debian jessie  Administrátor
      jednoduchy perl skript:

      #!/usr/bin/perl -w

      my @nums = <>;
      @nums = grep {$_ > 200 } @nums;
      print @nums;


      volas to takto:
      ./skript.pl subor_s_cislami.txt
      • Re: grep na cisla 14.07.2010 | 19:06
        Avatar borg Arch, Debian jessie  Administrátor
        pripadne zo shellu na jeden riadok, nemusis vytvarat ziadny file:

        perl -e 'print grep {$_ > 200 } <>' cisla.txt
    • Re: grep na cisla 14.07.2010 | 19:13
      Avatar Vladimir Koval Debian  Používateľ
      alebo:
      #!/bin/bash
      for i in `cat cisla.txt`

      do
      if [ $i -gt 200 ]
      then
      echo $i
      fi
      done
      • Re: grep na cisla 14.07.2010 | 19:14
        Avatar Vladimir Koval Debian  Používateľ
        pripadne -ge pre cisla vratane 200
    • Re: grep na cisla 14.07.2010 | 19:19
      Avatar m4jkl   Používateľ
      nie je to zrovna univerzalne riesenie, ale ked vies, ze horna hranica je 500, tak mozes pouzit nieco taketo:

      grep [2-9][0-9][0-9] subor
      • Re: grep na cisla 15.07.2010 | 12:55
        t0mas   Návštevník
        Vdaka ... to je presne co som potreboval!

        Dakujem vsetkym ktori poradili
    • Re: grep na cisla 14.07.2010 | 19:35
      l_barbarossa   Návštevník
      Ak plati ze cislo zacina hned na zaciatku riadku, mozes vyskusat:
      grep -E "^2.." subor_s_cislami.txt

      # - pozn.
      - namiesto grep -E sa da pouzit aj egrep
      - nemusi fungovat na vsetkych systemoch
      • Re: grep na cisla 14.07.2010 | 20:05
        l_barbarossa   Návštevník
        aha, sorry, beriem spat
        to moje najde aj
        20xx
        2000x
        2000

        co nie je ok





        • Re: grep na cisla 14.07.2010 | 20:20
          l_barbarossa   Návštevník
          grep -E "\b2[0-9]{2}\b" subor_s_cislami.txt
          • Re: grep na cisla 14.07.2010 | 20:22
            Avatar Fridolín Pokorný Fedora 21  Používateľ
            To pojde po 299, vyssie uz nie. On chce aj viac ako 299 ak som dobre pochopil.
          • Re: grep na cisla 14.07.2010 | 20:40
            l_barbarossa   Návštevník
            este raz, zle, zle
            a ak tam ma platit podmienka, ze cislo musi byt na zaciatku riadku a moze byt viac ako 3-ojciferne tak potom:
            grep -E "^[2-9][0-9]{2}\b|^[1-9]{4,}\b" subor_s_cislami.txt
            a ak nemusi byt na zaciatku, tak potom:
            grep -E "\b[2-9][0-9]{2}\b|\b[1-9]{4,}\b" subor_s_cislami.txt





    • Re: grep na cisla 14.07.2010 | 20:14
      Avatar Fridolín Pokorný Fedora 21  Používateľ
      Ak chces velmi pouzit grep, je vela sposobov, jeden z nich je:
      grep -e "`for (( i=200 ; i<=500 ; i++ )) do echo "^$i"; done`" textak.txt
      Pripadne ak chces len 200-500 a su tam aj vyssie cisla:
      grep -e "`for (( i=200 ; i<=500 ; i++ )) do echo "^$i$"; done`" textak.txt
      Ak chces len poslednych 300 riadkov:
      tail -n 300
      atd..