A voir également:
- Chercher une chaine avec awk dans un fichier
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier host - Guide
- Ouvrir un fichier .bin - Guide
25 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 févr. 2008 à 13:14
13 févr. 2008 à 13:14
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; print "Entrez la chaine à chercher : "; chomp(my $ch = <STDIN>); while(<>){ next unless /(\w*\.*$ch)/; $h{$1}++; } print keys %h," trouvé ",values %h," fois\n"; __END__ root@debian:~# perl ccm.pl fic Entrez la chaine à chercher : chaine1 a.chaine1 trouvé 2 fois root@debian:~#
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 févr. 2008 à 11:26
13 févr. 2008 à 11:26
Salut,
Pourquoi avec "awk" ? Un simple "grep" devrait suffire, non ?
La recherche doit renvoyer que la chaine de caractères (avec les 2 caractère précédents) ou la ligne entière ?
Pourquoi avec "awk" ? Un simple "grep" devrait suffire, non ?
La recherche doit renvoyer que la chaine de caractères (avec les 2 caractère précédents) ou la ligne entière ?
Comment faire alors?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 févr. 2008 à 11:47
13 févr. 2008 à 11:47
Ca dépend...
Tu n'as pas répondu !!!
La recherche doit renvoyer que la chaine de caractères (avec les 2 caractère précédents) ou la ligne entière ?
Tu n'as pas répondu !!!
La recherche doit renvoyer que la chaine de caractères (avec les 2 caractère précédents) ou la ligne entière ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 févr. 2008 à 11:56
13 févr. 2008 à 11:56
grep -o ".\.chaine3" fichier grep -o ".\.chaine3" fichierEt en application :
ssh$ cat plop ch=a.chaine1,b.chaine2 ch1=a.chaine1,b.chaine2 ch2=c.chaine3 ch3=a.chaine4,b.chaine5,chiane6 ssh$ var="chaine3" ssh$ grep -o ".\.${var}" plop c.chaine3;-))
Le grep -o n'existe pas sur aix :(
il n'y a que le grep -w mais qui retourne l'ensemble de la ligne :(
il n'y a que le grep -w mais qui retourne l'ensemble de la ligne :(
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 févr. 2008 à 12:02
13 févr. 2008 à 12:02
Salut,
voilà, mais ce n'est pas efficace tant qu'on ne connais pas exactement la structure complète de ton fichier
la chaîne à récupérée a toujours le format
LETRRE.chaineNUMERO ?!
voilà, mais ce n'est pas efficace tant qu'on ne connais pas exactement la structure complète de ton fichier
la chaîne à récupérée a toujours le format
LETRRE.chaineNUMERO ?!
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:~# grep -Eo '[a-zA-Z]\.chaine1' fic a.chaine1 a.chaine1 root@debian:~#
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 févr. 2008 à 12:05
13 févr. 2008 à 12:05
Le grep -o n'existe pas sur aix :(
et avec perl ça te vas?
et avec perl ça te vas?
Je suis désolé mais ça ne marche pas.
Voici le résultat d'execution sur le fichier fic :
grep -E "[a-zA-Z]\.chaine1" fic
résultat :
ch=a.chaine1,b.chaine2
ch1=a.chaine1,b.chaine2
Le paramètre "o" n'existe pas pour grep sur aix
Voici le résultat d'execution sur le fichier fic :
grep -E "[a-zA-Z]\.chaine1" fic
résultat :
ch=a.chaine1,b.chaine2
ch1=a.chaine1,b.chaine2
Le paramètre "o" n'existe pas pour grep sur aix
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 févr. 2008 à 12:14
13 févr. 2008 à 12:14
et ça?
lami20j
perl -ne 'print $1,"\n" if /=(\w*\.\w+1),/' fic--
lami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 févr. 2008 à 12:15
13 févr. 2008 à 12:15
Ben désolé, tu ne l'avais pas spécifié aussi...
En plus je me suis aperçu qu'il manquait le paramètre "\b" à l'expression pour quelle soit exacte :
;-))
En plus je me suis aperçu qu'il manquait le paramètre "\b" à l'expression pour quelle soit exacte :
grep -o ".\.chaine3\b" fichierEssaye avec "perl" alors comme suggéré par" lami20j".
;-))
Pour l'instruction perl, elle ne répond pas à ma question dans la mesure où elle délimite la chaine à rechercher avec "=" et "," alors qu'il y a d'autres chaine qui sont délimitées par "=" et la fin de la ligne. En plus elle affiche le premier paramètre $1!!!
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 févr. 2008 à 12:29
13 févr. 2008 à 12:29
Justement j'ai dit dans mon message qu'on a besoin de la structure de ton fichier
http://www.commentcamarche.net/forum/affich 5010161 chercher une chaine avec awk dans un fichier#7
On ne peux pas deviner ce que ton fichier contient
http://www.commentcamarche.net/forum/affich 5010161 chercher une chaine avec awk dans un fichier#7
On ne peux pas deviner ce que ton fichier contient
mon fichier c'est exactement ce que je vous ai lister :
ch=a.chaine1,b.chaine2
ch1=a.chaine1,b.chaine8
ch2=c.chaine3
ch3=a.chaine4,b.chaine5,chiane6
ch4=a.chaine4,b.chaine8,chiane9
en changeant juste les noms c tout!
ch=a.chaine1,b.chaine2
ch1=a.chaine1,b.chaine8
ch2=c.chaine3
ch3=a.chaine4,b.chaine5,chiane6
ch4=a.chaine4,b.chaine8,chiane9
en changeant juste les noms c tout!
Merci lami20j :)
le script marche bien. Cependant, je voudrais faire appel à ce script perl à partir de mon script korn shell et pour ce je voudrai une valeur de retour pour savoir si l'élément entré par l'utilisateur a été trouvé ou non.
Comment faire sachant bien que je ne connais pas perl du tout :(
le script marche bien. Cependant, je voudrais faire appel à ce script perl à partir de mon script korn shell et pour ce je voudrai une valeur de retour pour savoir si l'élément entré par l'utilisateur a été trouvé ou non.
Comment faire sachant bien que je ne connais pas perl du tout :(
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 févr. 2008 à 14:26
13 févr. 2008 à 14:26
par exemple
root@debian:~# cat ccm.sh #!/bin/sh perl /home/lami20j/ccm.pl $1 root@debian:~# sh ccm.sh fic Entrez la chaine à chercher : chaine1 a.chaine1 trouvé 2 fois root@debian:~#
Non, c pas l'appel du script shell! ça je sais faire :)
Je voudrai la valeur de retour à savoir "a.chaine1".
Je voudrai la valeur de retour à savoir "a.chaine1".
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 févr. 2008 à 15:45
13 févr. 2008 à 15:45
mets tu as la valeur de retour
a.chaine1 trouvé 2 fois
a.chaine1 trouvé 2 fois
Moi ce que je veux c intercepter cette valeur. çàd que lorsque je ferai appel à mon script perl il va me retourner "a.chaine1 trouvé 2 fois " mais moi je veux que ça soit dans une variable que je testerai au niveau de mon script ksh.
Exemple:
# cat ccm.sh
#!/bin/sh
perl /home/lami20j/ccm.pl $1
si "valeur de retour" = null alors
"traitement"
sinon
"traitement
fin si
Exemple:
# cat ccm.sh
#!/bin/sh
perl /home/lami20j/ccm.pl $1
si "valeur de retour" = null alors
"traitement"
sinon
"traitement
fin si