Commande GREP

Fermé
le_demandeur - 2 avril 2018 à 13:13
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 2 avril 2018 à 18:04
Bonjour,

J'essaye de trouver les programmes dans lesquels j'ai des lignes de code avec des positions exemple :

Move NOM-FICHIER(12:45) TO WK-VARIABLE.

donc par exemple recherchée est (??:??).

J'essaye d'utiliser la commande grep mais ça me paraît un peu compliqué de faire la correspondance.

Pourriez-vous m'aider SVP ?

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
2 avril 2018 à 13:29
Salut,

Merci de poster un exemple de ton fichier de départ et ce que tu veux trouver !

0
On peut trouver cette chaîne de caractère dans plusieurs fichier,l'objectif est de connaître ces fichiers.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > le_demandeur
2 avril 2018 à 15:38
Ben justement, merci de fournir quelques exemples concrets de ces dites chaînes de caractère ;-\
0
Voici quelques lignes qui contiennent ce que je cherche :

MOVE '9999' TO WK-ENREG(1274:4)

IF WK-CPT(18:5) = 'AGARI'

MOVE WS-CODED TO FS-ENR(554:5)
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > le_demandeur
2 avril 2018 à 16:15
grep -l -- '-[[:alpha:]]\+([[:digit:]]\+:[[:digit:]]\+)' *
devrait faire le job, si toutefois, toutes les chaînes de caractères sont bien conformes aux exemples donnés.

Si récursivité souhaité, rajouter "-r"

PS. C'est un ELLE minuscule dans
grep -l
et non pas un UN.
0
la commande ne m'a rien retourné.
Tout a l'heure j'ai essayé avec :

grep '(' * | grep ':' | grep ')'

mais ça me retourne même des lignes qui correspondent pas à mon besoin :

01 WS-ENREG PIC X(4000).
01 XL-LONGUEUR-FA PIC 9(00005) VALUE 04000.
01 XL-LONGUEUR-FB PIC 9(00005) VALUE 04000.
MOVE FE-ENREG(1:XZ-LONGUEUR-FA) TO WS-ENREG.
IF FE-ENREG(248:1) NOT = 'L'
IF FE-ENREG(554:5) = 'ADERE'
0