Chercher une chaine avec awk dans un fichier
sam
-
sam -
sam -
Bonjour,
Mon problème est comme suit :
J'ai un fichier "test" dans lequel je voudrai chercher une chaine exacte entrée par l'utilisateur .
Le fichier test est comme suit :
ch=a.chaine1,b.chaine2
ch1=a.chaine1,b.chaine2
ch2=c.chaine3
ch3=a.chaine4,b.chaine5,chiane6
etc...
Le script doit pouvoir localalisée par ex la chaine "chaine1" ou "chaine3" entrée par l'utilisateur et l'afficher entièrement "a.chaine1" ou encore "c.chaine3".
Si l'utilisateur entre par exemple "chai" le script rend une réponse négative.
Merci d'avance
Mon problème est comme suit :
J'ai un fichier "test" dans lequel je voudrai chercher une chaine exacte entrée par l'utilisateur .
Le fichier test est comme suit :
ch=a.chaine1,b.chaine2
ch1=a.chaine1,b.chaine2
ch2=c.chaine3
ch3=a.chaine4,b.chaine5,chiane6
etc...
Le script doit pouvoir localalisée par ex la chaine "chaine1" ou "chaine3" entrée par l'utilisateur et l'afficher entièrement "a.chaine1" ou encore "c.chaine3".
Si l'utilisateur entre par exemple "chai" le script rend une réponse négative.
Merci d'avance
A voir également:
- Chercher une chaine avec awk dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
25 réponses
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
# cat ccm.sh
#!/bin/sh
perl /home/lami20j/ccm.pl $1
si "n" = 0 alors
"traitement"
sinon
"traitement
fin si
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.
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.
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:~#
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 file 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:~#
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :(
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 :(