sed one-liner pour tout supprimer entre une paire de supports?


15

Je travaille avec du texte plein de choses entre crochets [] que je ne veux pas. Étant donné que je peux supprimer les crochets moi-même, je n'ai pas besoin de la doublure pour le faire pour moi, mais j'ai besoin d'une doublure qui supprimera tout entre eux.

Qu'en est-il des parenthèses () au lieu des parenthèses?

Réponses:


20

Remplacez [some text]par la chaîne vide. En supposant que vous ne voulez pas analyser les crochets imbriqués, le some textne peut pas contenir de crochets.

sed -e 's/\[[^][]*\]//g'

Notez que dans l'expression du crochet [^][]pour correspondre à tout sauf à [ou ], le ]doit venir en premier. Normalement, a ]mettrait fin au jeu de caractères, mais s'il s'agit du premier caractère du jeu (ici, après le ^caractère de complémentation), le ]représente lui-même.

Si vous souhaitez analyser les crochets imbriqués ou si le texte entre crochets peut s'étendre sur plusieurs lignes, sed n'est pas le bon outil.


merci, @Gilles ... btw, il peut s'étendre sur plusieurs lignes, mais j'utilise un script Perl pour joindre les lignes ...
ixtmixilix

@ixtmixilix: Si vous avez un script Perl, vous pouvez également lui faire supprimer le texte entre crochets. En Perl, vous pouvez écrire s/\[[^\[\]]*\]//g(c'est-à-dire utiliser des barres obliques inverses pour échapper aux membres du jeu de caractères).
Gilles 'SO- arrête d'être méchant'

@Gilles pourriez-vous en dire plus sur [^] [] exactement plz. merci
Arash

1
@arashams […]= jeu de caractères. ^comme premier caractère signifie compléter l'ensemble. ]serait normalement marquer la fin de l'ensemble, mais s'il s'agit du premier caractère autre que ^, c'est un caractère ordinaire - un ensemble vide ou le complément de l'ensemble vide n'est pas autorisé. Ensuite [est ordinaire et se ]termine l'ensemble.
Gilles 'SO- arrête d'être méchant'

@Gilles tnx pour votre aide mais je ne l' obtenir :( quelle dose moyenne que « ^ comme le premier moyen de caractères pour compléter l'ensemble » je veux dire que fait - il par exemple est - il adapté à tout le contenu??
Arash

9

La commande sed -e 's/([^()]*)//g'fera des parenthèses au lieu des crochets.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.