GNU/Linux >> Tutoriels Linux >  >> Linux

Sed One-liner pour tout supprimer entre une paire de crochets ?

Je travaille avec un texte plein de choses entre crochets [] que je ne veux pas. Comme je peux supprimer les crochets moi-même, je n'ai pas besoin de la ligne unique pour le faire à ma place, mais j'ai besoin d'une ligne unique qui supprimera tout ce qui se trouve entre eux.

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

Réponse acceptée :

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

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

Notez que dans l'expression entre parenthèses [^][] pour correspondre à tout sauf [ ou ] , le ] doit venir en premier. Normalement un ] terminerait le jeu de caractères, mais si c'est le premier caractère du jeu (ici, après le ^ caractère de complémentation), le ] se suffit à lui-même.

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


Linux
  1. Supprimer les occurrences de chaîne dans le fichier texte

  2. Supprimer les espaces blancs dans chaque début de ligne de fichier, en utilisant bash

  3. Supprimer les lignes vides à l'aide de sed

  4. Comment supprimer des fichiers créés entre deux fois ?

  5. Utilisation de sed pour remplacer entre un modèle spécifique

Comment supprimer des lignes vides dans des fichiers à l'aide de Grep, Sed et Awk

Linux - Tout est un fichier ?

Extraire la valeur entre deux modèles de recherche sur la même ligne ?

Sed :Supprimer toutes les occurrences d'une chaîne, sauf la première ?

Échapper à Blackslash dans Sed ?

Tutoriel Unix Sed :Supprimer des lignes de fichier à l'aide d'adresses et de modèles