Envoyé par
melouze
J'ai enlevé les dates et aussi les #!/bin/ksh en début de shell :
egrep '[^0-9][^#][^!]/[^ ]*/' *.ksh
C'est bizarre comme regexp!
ça veut dire: trouver un caractère différent d'un chiffre, suivi d'un caractère différent de '#', suivi d'un caractère différent de '!'...
Est-ce vraiment cela que tu veux?
Tu peux combiner des grep et des grep -v:
cat *.ksh | egrep '/[^ ]*/' | egrep -v '^#!'
qui veut dire: ne pas garder les lignes qui commencent ('^') par '#!'
Pour éliminer les dates, c'est plus dur car tu peux avoir un répertoire qui ressemble furieusement (et peut-être volontairement) à une date comme /truc/machin/2014/06/02 !!!
Sinon tu peux donc enfiler les filtres:
cat *.ksh | egrep '/[^ ]*/' | egrep -v '^#!' | egrep -v '[^/][0-9][0-9]/[0-9][0-9]/[0-9][0-9]'
pour éliminer les dates du genre jj/dd/mm (le '[^/]' du début sert à ne pas éliminer les répertoires qui ressemblent à des dates).
Par contre je sais pas comment n'afficher que le répertoire :
1 2
| export REP_LIMDNS_SC4="/data/flf/sc4scd/recep/LIM_DNS"
touch /data/flf/sc4scd/logsup/upr/${S_PROCEXE}.${S_NUMPROC} |
Je voudrais :
1 2
| /data/flf/sc4scd/recep/LIM_DNS
/data/flf/sc4scd/logsup/upr/${S_PROCEXE}.${S_NUMPROC} |
une "heuristique" pour tes 2 cas consiste à "piper" avec une commande de mise en forme comme:
| sed -e 's:[^"]*"\(/[^"]*\)".*:\1:' -e 's:[^/]*/:/:'
qui veut dire: remplacer toute ligne contenant des caractères différents de '"', suivis d'un '"',
suivi d'un groupe contenant {un '/', suivi de caractères différents de '"'}, suivi d'un '"', suivi de n'importe quoi
par le groupe (qui était contenu entre les guillemets)
Attention! S'il y a plusieurs guillemets dans la ligne, ça ne rend que le premier...
La correction est laissée en exercice au lecteur (on envisagera dans un premier temps de traiter à part les lignes contenant plusieurs groupes de guillemets)
1 2 3 4 5 6 7
| $ cat blop
export REP_LIMDNS_SC4="/data/flf/sc4scd/recep/LIM_DNS"
touch /data/flf/sc4scd/logsup/upr/${S_PROCEXE}.${S_NUMPROC}
$ cat blop | sed -e 's:[^"]*"\(/[^"]*\)".*:\1:' -e 's:[^/]*/:/:'
/data/flf/sc4scd/recep/LIM_DNS
/data/flf/sc4scd/logsup/upr/${S_PROCEXE}.${S_NUMPROC} |
Mais ça reste très heuristique...
Sinon, plutôt que de tout vouloir traiter en une seule opération, je procèderais par petits pas, en commençant par le plus spécifique pour aller vers le plus général.
Par exemple, traiter en premier tous les cas d'une affectation avec guillemets:
puis les affectations sans guillemets
etc.
en vérifiant ce qu'on pêche à chaque étape...
Partager