Chercher une chaine avec awk dans un fichier - Page 2

Précédent
  • 1
  • 2
  1. sam
     
    Pardon, la valeur de retour que je veux est le "n" fois:
    # cat ccm.sh
    #!/bin/sh

    perl /home/lami20j/ccm.pl $1
    si "n" = 0 alors
    "traitement"
    sinon
    "traitement
    fin si
    0
  2. sam
     
    Il y a aussi un problème au niveau de la recherche :(
    si jamais l'utilisateur entre "ch" il faudrait que la valeur de retour de "n" soit 0 et non pas 5 :(
    ch trouvé 5 fois
    Il faut que le script charche la chaine entière comme je l'ai dis dans mes premiers mails.
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Voilà
    root@debian:~# cat fic
    ch=a.chaine1,b.chaine2
    ch1=a.chaine1,b.chaine2
    ch2=c.chaine3
    ch3=a.chaine4,b.chaine5,chiane6
    etc...
    
    root@debian:~# cat ccm.pl
    #!/usr/bin/perl
    use strict;use warnings;
    
    my %h;
    my $ch = shift @ARGV;
    while(<>){
      next unless /(\w*\.*$ch)/;
      $h{$1}++;
    }
    print values %h;
    __END__
    root@debian:~# cat ccm.sh
    #!/bin/sh
    
    echo -e "Entrez la chaine a chercher : \c"
    read ch
    var=$(perl /home/lami20j/ccm.pl $ch $1)
    
    if [ -z $var ]
    then
    echo "NULL"
    else
    echo $var
    fi
    
    root@debian:~# sh ccm.sh fic
    Entrez la chaine a chercher : chaine1
    2
    root@debian:~# sh ccm.sh fic
    Entrez la chaine a chercher : divers
    NULL
    root@debian:~#
    
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    le script shell
    #!/bin/sh
    
    echo -e "Entrez la chaine a chercher : \c"
    read ch
    var=$(perl /home/lami20j/ccm.pl $ch $1)
    
    if [ -z $var ]
    then
    echo "NULL"
    else
    echo $var
    fi
    
    le script perl
    #!/usr/bin/perl
    use strict;use warnings;
    
    my %h;
    my $ch = shift @ARGV;
    while(<>){
      next unless /(\w*\.$ch)\b/;
      $h{$1}++;
    }
    print values %h;
    __END__
    
    le résultat
    root@debian:~# sh ccm.sh fic
    Entrez la chaine a chercher : chaine1
    2
    root@debian:~# sh ccm.sh fic
    Entrez la chaine a chercher : chaine10
    NULL
    root@debian:~# sh ccm.sh fic
    Entrez la chaine a chercher : ch
    NULL
    root@debian:~#

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sam
     
    Voici le résultat d'execution que j'obtiens.

    Entrez la chaine a chercher : chai
    pp[8]: test: 0403-004 Spécifiez un paramètre avec cette commande.

    []>sh pp _tmp
    Entrez la chaine a chercher : chaine3
    1
    []>sh pp _tmp
    Entrez la chaine a chercher : chiane9
    pp[8]: test: 0403-004 Spécifiez un paramètre avec cette commande.

    Merci d'avance pour ton lamij, je t'ai pas mal dérangé, j'en suis désolé mais je ne connais pas perl :(
    0
Précédent
  • 1
  • 2