[PERL/BASH] Estrazione di righe con doppia condizione

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • Eresia
    Opinionista
    • 16/04/07
    • 107

    #1

    [PERL/BASH] Estrazione di righe con doppia condizione

    Ciao, ho un file del tipo:

    Codice:
    1 2 A 1 3 5 6 7 8 9 89 1 2 3 20 35 51 89
    8 1 D 2 4 5 6 8 10 58 50 6 8 4 0 5 6 50
    9 5 A 2 5 4 6 8 1 2 5 16 5 6 5 10 50 5
    .
    .
    1 6 F 1 5 6 8 4 6 5 19 6 2 10 2 65 10 5
    E all' interno di uno script in perl inserisco :

    Codice:
    $a_count=eval `cat ${doc_dir}/${data} | grep A -c`;
    n modo da inserire in $a_count il numero di righe contenenti la lettera A...
    Ora per
    http://eresia-tnt.it
  • cerealkiller
    curioso
    • 08/03/05
    • 1214

    #2
    non credo che grep ce la possa fare

    ma un

    perl del genere dovrebbe fare al caso tuo

    my($totalRow) = 0;
    while(<STDIN>)
    {
    my($line) = $_;
    chomp($line);
    if($line =~ /[A]/) #linee con -> A <-
    {
    @sepl = split(/ /,$line);
    #print $sepl[1];
    #*** only lines with dates at position 28 ****
    if ($sepl[4]>4) #posizione 5 maggiore di 4
    {
    $totalRow += 1;
    }
    }
    }
    print $totalRow;


    scusa la forma

    Comment

    • Eresia
      Opinionista
      • 16/04/07
      • 107

      #3
      ora vedo un po' thx, mi hanno pure consigliato AWK

      Codice:
      [cacao74@tweety tmp]$ more cacao.txt 
      1 2 A 1 3 5 6 7 8 9 89 1 2 3 20 35 51 89
      8 1 D 2 4 5 6 8 10 58 50 6 8 4 0 5 6 50
      9 5 A 2 5 4 6 8 1 2 5 16 5 6 5 10 50 5
      [cacao74@tweety tmp]$ more cacao.txt | awk ' /A/ { if ($11 >= 50) print $0 } ' | wc -l
      1
      [cacao74@tweety tmp]$ more cacao.txt | awk ' /A/ { if ($11 >= 5) print $0 } ' | wc -l
      2
      http://eresia-tnt.it

      Comment

      • cerealkiller
        curioso
        • 08/03/05
        • 1214

        #4
        Originariamente Scritto da Eresia Visualizza Messaggio
        ora vedo un po' thx, mi hanno pure consigliato AWK

        Codice:
        [cacao74@tweety tmp]$ more cacao.txt 
        1 2 A 1 3 5 6 7 8 9 89 1 2 3 20 35 51 89
        8 1 D 2 4 5 6 8 10 58 50 6 8 4 0 5 6 50
        9 5 A 2 5 4 6 8 1 2 5 16 5 6 5 10 50 5
        [cacao74@tweety tmp]$ more cacao.txt | awk ' /A/ { if ($11 >= 50) print $0 } ' | wc -l
        1
        [cacao74@tweety tmp]$ more cacao.txt | awk ' /A/ { if ($11 >= 5) print $0 } ' | wc -l
        2
        hehe vero, solo che io sono un zuccone e preferisco sempre farmi i programmi da me piuttosto che leggere i man

        Comment

        Working...