Chercher une chaine avec awk dans un fichier - Page 2

Précédent
  • 1
  • 2
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
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
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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

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

Posez votre question
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