Supprimer un bloc avec sed
Résolu/Fermé
A voir également:
- Supprimer un bloc avec sed
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Impossible de supprimer un fichier - Guide
- Supprimer pub youtube - Accueil - Streaming
- Comment recuperer un message supprimé sur whatsapp - Guide
11 réponses
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
17 janv. 2009 à 17:42
17 janv. 2009 à 17:42
Salut,
sed '/BEGIN/{:z;N;/END/!bz;/text3/d}' fichierExplications :
/BEGIN/ { # On trouve une ligne contenant le motif :z # Etiquette N # On ajoute la ligne suivante dans l'espace de travail /END/ !b z # Si on aucun motif END n'est trouvé, on se branche #+ à l'étiquette z et on recommence /text3/ d # Une fois le motif END trouvé, si on trouve un motif #+ correspondant à text3, on supprime le contenu de #++ de l'espace de travail };-))
Trop fort !!!!!
Il est formidable ce forum :))))))))))))))))))
Je savais pas que SED est un outil tres puissant !!!!!
Je vous remercie :)
Il est formidable ce forum :))))))))))))))))))
Je savais pas que SED est un outil tres puissant !!!!!
Je vous remercie :)
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
17 janv. 2009 à 18:38
17 janv. 2009 à 18:38
De rien ;-))
Pour SED, voir la FAQ : http://www.commentcamarche.net/faq/478 sed
Pour SED, voir la FAQ : http://www.commentcamarche.net/faq/478 sed
Je trouve que le cour est bien structuré, auriez vous un lien sur les "Expressions régulières", je crois que c'est vraiment la base de SED. Merci
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
17 janv. 2009 à 18:55
17 janv. 2009 à 18:55
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour jipicy,
Help me SVP :)
J'ai essayé la commande ci dessous sur un system interne à mon entreprise (TOP avec SH) ca ne marche pas !!!
sed '/SETpath/{:z;N;/IMPLpath/!bz;/LTS0545212-002/d}' monfichier
Erreur généré:
sed: The label /SETpath/{:z;N;/IMPLpath/!bz;/LTS047680-002/d} is greater than eight characters.
Sachant que cette manip fonctionne correctement sous OpenSUSE (SH)
Merci
Help me SVP :)
J'ai essayé la commande ci dessous sur un system interne à mon entreprise (TOP avec SH) ca ne marche pas !!!
sed '/SETpath/{:z;N;/IMPLpath/!bz;/LTS0545212-002/d}' monfichier
Erreur généré:
sed: The label /SETpath/{:z;N;/IMPLpath/!bz;/LTS047680-002/d} is greater than eight characters.
Sachant que cette manip fonctionne correctement sous OpenSUSE (SH)
Merci
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
19 janv. 2009 à 13:01
19 janv. 2009 à 13:01
Essaie d'exécuter ta commande comme ça (et non pas sur une seule ligne) :
sed ' /SETpath/ { :z N /IMPLpath/ !b z /LTS0545212-002/ d }' tonfichier
C'est cool, ça fonctionne !!!! peut tu m'expliquer la différence?
Maintenant je galaire sur un autre probleme, enfaite:
Je prends la LTS0545212-002 est je la remplace par '${M_tab[k]}' avec une boucle while pour incrémenter le K , ca fonctionne mais (tj mais :))), il mon script fais des modification sur le dernier élément du tableau
sed '
/SETpath/ {
:z
N
/IMPLpath/ !b z
/'${M_tab[k]}'/ d
}' $med_file > fileX
A mon avis, il faut aussi incrémenter le fichier $med_file
sed '
/SETpath/ {
:z
N
/IMPLpath/ !b z
/'${M_tab[k]}'/ d
}' $med_file_$k > fileX_$(($k+1))
Ça ne fonctionne toujours pas !
Auriez vous une autre solution
Merci encore pour vote patience :))
Maintenant je galaire sur un autre probleme, enfaite:
Je prends la LTS0545212-002 est je la remplace par '${M_tab[k]}' avec une boucle while pour incrémenter le K , ca fonctionne mais (tj mais :))), il mon script fais des modification sur le dernier élément du tableau
sed '
/SETpath/ {
:z
N
/IMPLpath/ !b z
/'${M_tab[k]}'/ d
}' $med_file > fileX
A mon avis, il faut aussi incrémenter le fichier $med_file
sed '
/SETpath/ {
:z
N
/IMPLpath/ !b z
/'${M_tab[k]}'/ d
}' $med_file_$k > fileX_$(($k+1))
Ça ne fonctionne toujours pas !
Auriez vous une autre solution
Merci encore pour vote patience :))
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
19 janv. 2009 à 16:05
19 janv. 2009 à 16:05
La différence tient essentiellement sur la version de "sed". On aurait pu aussi utiliser le paramètre "-e", mais là aussi c'est un peu biscornu à mettre en place...
Toujours est-il en parlant de version de "sed", qu'elle est celle que tu utilises (sed --version) ? Sur quel système ?
Si ta version est supérieure à 4.0.5, tu as le paramètre "-i" (in place) qui permet de modifier le fichier fourni en entrée sans passer par un fichier temporaire.
Toujours est-il en parlant de version de "sed", qu'elle est celle que tu utilises (sed --version) ? Sur quel système ?
Si ta version est supérieure à 4.0.5, tu as le paramètre "-i" (in place) qui permet de modifier le fichier fourni en entrée sans passer par un fichier temporaire.
La version est inférieur à 4.0.5, et le paramètre "-i" (in place) n'existe pas
en tappant:
man sed --> j 'ai comme options (-e -n -f)
Y'a t'il une autre solution sans passer par des fichiers temporaires?
Peut on installer sur le système une nouvelle version de SED (et encore voir si j'ai tous les droits)
Merci
en tappant:
man sed --> j 'ai comme options (-e -n -f)
Y'a t'il une autre solution sans passer par des fichiers temporaires?
Peut on installer sur le système une nouvelle version de SED (et encore voir si j'ai tous les droits)
Merci
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
20 janv. 2009 à 11:23
20 janv. 2009 à 11:23
Re-
Y'a t'il une autre solution sans passer par des fichiers temporaires?
Malheureusement non, tu vas donc être obligé de passer par des fichiers temporaires à chaque itération de ta boucle :
Y'a t'il une autre solution sans passer par des fichiers temporaires?
Malheureusement non, tu vas donc être obligé de passer par des fichiers temporaires à chaque itération de ta boucle :
sed ' /SETpath/ { :z N /IMPLpath/ !b z /'${M_tab[k]}'/ d }' $med_file > fileX mv -i fileX $med_file