Commande SED pour supprimer une ligne

Commande SED pour supprimer une ligne
SED est un outil Linux intégré pour la manipulation du texte. Le terme SED signifie rédacteur en chef. Malgré le nom, SED n'est pas un éditeur de texte en soi. Il faut plutôt du texte comme entrée, effectue diverses modifications de texte en fonction des instructions et imprime la sortie.

Ce guide montrera comment utiliser SED pour supprimer une ligne d'un texte.

SED sur Linux

Le nom complet de SED nous donne un indice sur sa méthode de travail. SED prend le texte d'entrée en tant que flux. Le texte peut venir de n'importe où - un fichier texte ou une sortie standard (STDOUT). Après avoir pris l'entrée, SED fonctionne sur elle en ligne par ligne.

Pour une démonstration, voici un fichier texte simple que j'ai généré.

$ mannequin de chat.SMS
1. le
2. rapide
3. brun
4. renard
5. sauts
6. sur
7. le
8. paresseux
9. chien

Suppression de ligne à l'aide de SED

Pour supprimer une ligne, nous utiliserons la commande SED «D». Notez que vous devez déclarer la ligne à supprimer. Sinon, SED supprimera toutes les lignes.

Supprimer une seule ligne

La commande SED suivante supprimera la première ligne du texte.

mannequin SED '1D'.SMS

Fondamentalement, pour supprimer une ligne, vous avez besoin du numéro de ligne de la ligne cible. Retirer la ligne 5.

mannequin SED '5D'.SMS

Pour supprimer la dernière ligne du fichier texte, au lieu de calculer manuellement le numéro de ligne, utilisez «$» à la place.

SED '$ D' MANDE.SMS

Supprimer une gamme de lignes

SED peut supprimer une gamme de lignes. Ici, la valeur de ligne minimale est de 1 et la valeur de ligne maximale est 5. Pour déclarer la gamme, nous utilisons des virgules (,).

mannequin SED '1,5D'.SMS

Supprimer plusieurs lignes

Et si les lignes que vous souhaitez supprimer ne sont pas dans une plage fixe? Jetez un œil à la commande SED suivante. Notez que nous utilisons un point-virgule (;) comme délimiteur. Essentiellement, chaque option délimitée est une commande SED distincte.

Sed '1d; 2d; 3d; $ d' mannequin.SMS

Supprimer toutes les lignes sauf la plage spécifiée

Dans l'exemple suivant, SED ne conservera que les lignes décrites par la gamme. Ici, "!«Est l'opérateur de négation, disant à SED de garder les lignes spécifiques.

Sed '2,4!d 'mannequin.SMS

Supprimer les lignes vides

S'il y a plusieurs lignes vides ou vides dans le texte, la commande SED suivante les supprimera toutes.

Sed '/ ^ $ / d' mannequin.SMS

Supprimer les lignes en fonction du motif

SED peut rechercher un modèle particulier et effectuer les actions spécifiées sur la ligne. Nous pouvons utiliser cette fonctionnalité pour supprimer des lignes spécifiques qui correspondent à un motif.

Jetons un coup d'œil à la démonstration suivante. SED supprimera toute ligne qui contient la chaîne «le».

SED '/ LE / D' MANDEM.SMS

Nous pouvons également décrire plusieurs chaînes à rechercher. Chaque chaîne est délimitée en utilisant le symbole «\ |».

Sed '/ Brown \ | The / D' Dummy.SMS

Supprimer les lignes en commençant par un personnage spécifique

Pour indiquer le début d'une ligne, nous utiliserons le symbole de la garette (^).

La commande SED suivante supprimera toutes les lignes en commençant par un chiffre. Ici, le groupe de personnages «[: chiffre:]» décrit tous les chiffres (0-9).

sed '/ ^ [[: chiffre:]] / d' mannequin.SMS

Nous pouvons également décrire plusieurs caractères pour une correspondance valide. L'exemple suivant correspondra à toutes les lignes qui commencent par «T» et «B».

sed '/ ^ [tb] / d' mannequin.SMS

Dans l'exemple suivant, consultez comment supprimer toutes les lignes qui commencent par un caractère majuscule. Ici, nous utilisons le groupe de caractères majuscules «[: Upper:]».

Sed '/ ^ [[: Upper:]] / D' Dummy.SMS

Si les lignes cibles ont des caractères minuscules au début, utilisez le groupe de caractères minuscules «[: inférieur:]».

sed '/ ^ [[: inférieur:]] / d' mannequin.SMS

Supprimer les lignes se terminant par un caractère spécifique

Pour indiquer la fin d'une ligne, nous pouvons utiliser le symbole «$». Il décrit la correspondance avec la dernière occurrence du motif.

Dans l'exemple suivant, SED supprimera les lignes se terminant par «E».

SED '/ E $ / D' DUMMY.SMS

Essayons avec une recherche à plusieurs caractères.

Sed '/ [en] $ / d' mannequin.SMS

Suppression de lignes qui correspondent au modèle et à la ligne suivante

Nous avons déjà démontré comment supprimer une ligne si un motif correspond. Nous pouvons également étendre et supprimer la ligne suivante.

Découvrez la commande SED suivante.

sed '/ le / n; d;' mannequin.SMS

SED correspondra à la ligne qui contient «le» et supprimera également la ligne suivante.

Suppression de la ligne du modèle correspondant à la fin

Nous pouvons en outre étendre l'exemple précédent pour ordonner à SED de supprimer toutes les lignes, à partir de la première correspondance du motif.

sed '/ fox /, $ d' mannequin.SMS

Ici, SED supprimera la ligne qui correspond au modèle «le» premier et toutes les lignes après.

Pensée finale

SED est un outil simple. Cependant, il peut faire des merveilles, grâce au soutien à l'expression régulière. SED s'intègre également de manière transparente dans divers scripts.

Ce n'était qu'un court guide démontrant l'une des fonctions SED - Suppression des lignes. Il y a des tonnes d'autres choses que vous pouvez faire avec SED. Par exemple, consultez ce Mega Guide sur 50 exemples SED. C'est un guide fantastique couvrant toutes les bases et de nombreuses implémentations SED avancées.