Recherche avancée avec find et grep [Fermé]

Signaler
Messages postés
3
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
19 juillet 2007
-
Messages postés
3
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
19 juillet 2007
-
Bonjour,

je voudrai effectuer sous unix une recherche dans toute une arborescence d'un type de fichiers '*.cbl'. Puis dans ces fichiers de données rechercher une chaine située entre la colonne 7 et la colonne 72.
Le but étant d'avoir à l'affichage les noms des fichiers et les lignes concernées.
J'ai fait différents essais en utilisant les commandes find et grep avec des pipes et des exec mais sans succès. Une idée serait de faire ça avec une expression régulière, mais je n'ai pas réussi à restreindre la recherche entre les colonnes 7 à 72 ....

Voilà, merci d'avance pour vos réponses ! :)

5 réponses

Messages postés
96
Date d'inscription
lundi 9 juillet 2007
Statut
Membre
Dernière intervention
18 janvier 2008
6
Salut,
ALors comme ca te lancé la commande cache non parce que généralement quand j'utilise grep je galere avant d'avoir le bon reglage mais il faut que tu joue avec une commande de plus qui s'appelle cut elle te permet de faire des selections dans les colonnes.
VA voir ici c'est pas mal : http://www.ac-creteil.fr/reseaux/systemes/linux/shell-scripts/filtres.html
Messages postés
3
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
19 juillet 2007

Bonjour !

Merci pour ton lien, je l'ai visité, il est effectivement très intéressant, mais je n'ai pas réussi à trouver vraiment ce que je voulais.
Pour moi, la commande idéale serait quelque chose comme ça pour une recherche de la chaine toto par exemple :
find . -name '*.cbl' -exec cut -c7-72 {} \; | grep 'toto'

Je sais que ça ne marche pas, ne serait-ce que pour des raisons de syntaxe, mais ça illustre bien l'enchaînement logique auquel je voudrai arriver.
Messages postés
96
Date d'inscription
lundi 9 juillet 2007
Statut
Membre
Dernière intervention
18 janvier 2008
6
Ouais c'est cela un truc dans le genre ou
find * -name *.cbl | grep toto |cut -c7-72 ....
Messages postés
102
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
3 septembre 2010
9
et ça ?
find . -name "*.cbl" | xargs cut -c7-72 | grep toto
Messages postés
3
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
19 juillet 2007

@welby : ça n'ira pas parce qu'il faut que je coupe les colonnes avant de faire le grep, sinon comme ces colonnes contiennent des données "parasites", je vais me retrouver avec des lignes en trop à la fin.

@poumiZ : ouais, c'est plus dans cet esprit-là : je suis plus devant la machine là donc je teste demain matin et je vous tiens au courant
Mais un des points critiques est de retrouver aussi en sortie le nom du fichier qui contient les données recherchées et en mettant le grep après le cut, je suis pas sûr qu'il le garde .... on verra ça demain, merci et bonne soirée !