Sed : ligne précédant celle identifié
Résolu/Fermé
nono58
-
13 mars 2009 à 17:14
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 mars 2009 à 10:24
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 mars 2009 à 10:24
A voir également:
- Sed : ligne précédant celle identifié
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? - Guide
- Sed et ses caprices (ou les miens) ✓ - Forum Linux / Unix
- Comptage des caractères dans Word ✓ - Forum Word
- Sed supprimer ligne vide - Forum Linux / Unix
- Sed windows - Forum Linux / Unix
4 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
13 mars 2009 à 17:46
13 mars 2009 à 17:46
Salut
Tu peux utiliser
Cdlt
Tu peux utiliser
sed 'N; s/--\n/\n* /g' fichier
Cdlt
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 mars 2009 à 20:50
13 mars 2009 à 20:50
Salut,
Au cas ou tu aurais aussi des lignes ne se continuant pas sur l'autre lignes :
Au cas ou tu aurais aussi des lignes ne se continuant pas sur l'autre lignes :
[tmpfs]$ cat nono 1 25 3 45 2 68 4 95 * 5 85 6 24 1 45 1 25 3 45 2 68 4 94 1 25 3 45 2 68 4 93 * 5 85 6 24 1 45 1 25 3 45 2 68 4 92 1 25 3 45 2 68 4 91 1 25 3 45 2 68 4 90 * 5 85 6 24 1 45 [tmpfs]$ sed 'N;/\n\* /{s//--\n/;b};P;D' nono 1 25 3 45 2 68 4 95-- 5 85 6 24 1 45 1 25 3 45 2 68 4 94 1 25 3 45 2 68 4 93-- 5 85 6 24 1 45 1 25 3 45 2 68 4 92 1 25 3 45 2 68 4 91 1 25 3 45 2 68 4 90-- 5 85 6 24 1 45 [tmpfs]$;-))
Merci Jipicy pour la réponse, ça marche nickel. Dans le man de sed, je ne suis pas sur d'avoir bien compris les explications des N;P;D; utilisés... Si tu as quelques minutes pour m'éclairer, merci bien.
Merci également à fiddy pour son aide. Sa réponse fonctionnait à la première occurence. Je n'ai chercher en détails pourquoi, mais l'explication du P et D utilisés devrait y parvenir ???
Merci également à fiddy pour son aide. Sa réponse fonctionnait à la première occurence. Je n'ai chercher en détails pourquoi, mais l'explication du P et D utilisés devrait y parvenir ???
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
>
nono58
16 mars 2009 à 09:12
16 mars 2009 à 09:12
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
16 mars 2009 à 09:26
16 mars 2009 à 09:26
sed ' N # On ajoute la ligne suivante dans l'espace de travail /\n\* / { # Si on trouve une fin de ligne suivie d'un astérisque s//--\n/ # on substitue cette fin de ligne suivie d'un astérisque par # 2 tirets suivis d'une fin de ligne b # et on se branche à la fin du script (après l'accolade fermante) } P # Si aucune correspondance à la regex n'a été trouvée, on affiche # la 1ère partie de l'espace de travail (jusqu'à la fin de ligne (\n) D # on l'efface et on reprend le cycle en haut en ajoutant une nouvelle ligne
'
nono-58
Messages postés
1
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 mars 2009
16 mars 2009 à 10:19
16 mars 2009 à 10:19
Merci pour les explications personnalisées, c'est encore mieux...
Je ne sais pas trop comment clore le sujet, étant anonyme à la création du post.
Je ne sais pas trop comment clore le sujet, étant anonyme à la création du post.
Autant pour moi, il y a de très bonnes explications dans les astuces du site :o)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
16 mars 2009 à 10:24
16 mars 2009 à 10:24
Puisque ma version, ne marchait que sur la première occurence, la voici modifiée pour toutes les autres :
Au final, le motif ressemble à celui de jipicy.
sed 'N;s/\n\* / --\n/;P;D' nono
Au final, le motif ressemble à celui de jipicy.
13 mars 2009 à 21:14
Ca serait donc plutôt :