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.