Nieme occurence ? [expert][script][sed] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 18-08-2013 à 16:27:53
Bonjour, moi je sais pas, t'as droit à mettre ta commande sed dans un .sh ?
Marsh Posté le 18-08-2013 à 17:20:46
Salut,
Une solution sûrement parmi d'autres...
Le fichier référence (plop) :
truc machin bidule |
Le script sed (script.sed) :
Code :
|
Le résultat de la commande "sed -f script.sed plop" :
pattern0 |
J'ai ciblé la 10ème occurrence (il y en a 11). Il n'y a qu'à changer le chiffre dans l'expression pour cibler l'occurrence de son choix
Explications en gros.
le script charge tout le fichier dans le buffer principal de "sed".
:z |
Puis on élimine tout ce qui se trouve avant le 1er motif de référence.
s/.*\(pattern0.*\)/\1/ |
On place un "tag" (ici j'ai choisi de rajouter une fin de ligne (\n) ce qui nous en fait 2 consécutives) après la 10ème occurrence du 2nd motif.
s/pattern1/&\n/10 |
Et pour finir on supprime le "tag" et tout ce qui se trouve après lui.
s/\n\n.*//p |
Marsh Posté le 18-08-2013 à 18:23:05
merci pas mal..
Marsh Posté le 19-08-2013 à 18:10:07
Tiens encore plus simple, avec un branchement conditionnel (si une substitution n' a pas été opérée, alors on boucle) :
Code :
|
#n |
Code :
|
pattern0 |
Marsh Posté le 16-08-2013 à 00:15:16
bonjour
j'ai une question de la mort qui tue maudite...pour vrais experts donc y'a défis là
vu sur un autre forum une question intéressante dont le but est avec sed
de sélectionner un texte entre deux mots mais le second peut exister plusieurs fois, il faut donc prendre la 3ième occurrence disons...
par exemple
truc machin bidule
pattern0
d
pattern1
e
pattern1
f
pattern1
g
pattern1
chose foo bar
ça sélectionnerai uniquement :
pattern0
d
pattern1
e
pattern1
f
pattern1
le principe de boucle pour faire ça sur 2ième occurrence aurait la structure suivante :
je me disais donc pour la troisième il suffit d'ajouter encore une boucle de saut supplémentaire. mais c'est idiot par principe parce que si un jour on devait faire la même chose pour la 100ième occurrence... le script sed serai plus gros que le ficher à trier...
y a t il un moyen de faire une boucle en indiquant de manière chiffrée le nombre d’occurrences ou de boucle à faire.
---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)