Supprimer tout un bloc dans un fichier via SED, AWK, etc..

Résolu/Fermé
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 - 29 déc. 2021 à 10:39
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 - 29 déc. 2021 à 16:50
Bonjour,

Je souhaite via SED, AWK ou autre supprimer le second bloc sachant qu'un bloc est limité par

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----


Exemple

Avant suppression
-----BEGIN CERTIFICATE-----
jfqkhkqmghkmklqfmhfqfggq
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
poyyitjhlhdfliurhlqk
-----END CERTIFICATE-----


Ce que je souhaite
-----BEGIN CERTIFICATE-----
jfqkhkqmghkmklqfmhfqfggq
-----END CERTIFICATE-----


Une idée?

Merci d'avance
A voir également:

3 réponses

dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 618
29 déc. 2021 à 15:49
hello
$ awk '{print $0} /--END CERTIFICATE--/ {exit}' fichier
-----BEGIN CERTIFICATE-----
jfqkhkqmghkmklqfmhfqfggq
-----END CERTIFICATE-----
$
1
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 618
29 déc. 2021 à 16:50
{print $0} on imprime chaque ligne
/--END CERTIFICATE--/ {exit}' si la ligne contient --END CERTIFICATE-- on termine le awk

même chose mais on fait AND (&&) avec un compteur n qui vaut 0 au départ
$ awk '{print $0} /--END CERTIFICATE--/ && ++n==2 {exit}' fichier
-----BEGIN CERTIFICATE-----
jfqkhkqmghkmklqfmhfqfggq
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
poyyitjhlhdfliurhlqk
-----END CERTIFICATE-----
1
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 23
Modifié le 29 déc. 2021 à 16:22
Merci dubcek.

Possible d'avoir quelques explications sur cette commande?

Et une autre question en espérant ne pas abuser! Si j'ai trois blocs et que je veux garder que els deux premiers et supprimer le dernier?

Exemple

Avant
-----BEGIN CERTIFICATE-----
jfqkhkqmghkmklqfmhfqfggq
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
poyyitjhlhdfliurhlqk
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
mlmdflmkldsfdf
-----END CERTIFICATE-----


Après
-----BEGIN CERTIFICATE-----
jfqkhkqmghkmklqfmhfqfggq
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
poyyitjhlhdfliurhlqk
-----END CERTIFICATE-----



0