GNU/Linux >> Tutoriels Linux >  >> Linux

Supprimer la ligne contenant une certaine chaîne et la ligne suivante ?

J'utilise ça

cat foo.txt | sed '/bar/d'

pour supprimer les lignes contenant la chaîne bar dans le fichier.

Je voudrais cependant supprimer ces lignes et la ligne juste après . De préférence en sed , awk ou un autre outil disponible dans MinGW32.

C'est une sorte d'inverse de ce que je peux obtenir dans grep avec -A et -B pour imprimer les lignes correspondantes ainsi que les lignes avant/après la ligne correspondante.

Existe-t-il un moyen simple d'y parvenir ?

Réponse acceptée :

Si vous avez GNU sed (donc Linux non embarqué ou Cygwin) :

sed '/bar/,+1 d'

Si vous avez bar sur deux lignes consécutives, cela supprimera la deuxième ligne sans l'analyser. Par exemple, si vous avez un fichier bar de 3 lignes /bar /foo , le foo la ligne restera.


Linux
  1. Apprendre à utiliser l'éditeur de texte Sed

  2. La commande Linux Sed :utilisation et exemples

  3. Manipulation de texte en ligne de commande avec sed

  4. Ne renvoyer que la chaîne correspondante dans Sed ?

  5. Sed Supprimer les caractères de la nouvelle ligne ?

Comment supprimer des lignes d'un fichier à l'aide de la commande Sed

Avec la commande "cat" de Linux, comment afficher uniquement certaines lignes par numéro ?

Sed :Insérer le texte après le nième caractère précédant/suivant une chaîne donnée ?

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

Tutoriel Unix Sed :ajouter, insérer, remplacer et compter les lignes de fichiers

Linux - grep de certaines lignes à la fin du fichier