GNU/Linux >> Tutoriels Linux >  >> Linux

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

Dans le précédent tutoriel sed, nous avons discuté des bases de la commande Unix sed et de l'impression de lignes à partir d'un fichier en utilisant l'adresse et les modèles sed .

Dans cet article, voyons comment supprimer des lignes d'un fichier à l'aide d'adresses et de modèles avec 8 exemples impressionnants.

  • La commande "p" imprime le tampon (n'oubliez pas d'utiliser l'option -n avec "p")
  • La commande "d" est juste en face, c'est pour la suppression. ‘d’ supprimera le tampon d'espace de motif et commencera immédiatement le cycle suivant.
Syntax:

# sed 'ADDRESS'd filename

# sed /PATTERN/d filename

La syntaxe des ADRESSES et des MOTIFS donnée dans l'impression est également applicable pour la suppression, à l'exception de l'option -n. (-n uniquement pour supprimer le tampon de motif d'impression, peut être utilisé avec la commande "p")

Créons d'abord le fichier geekstuff.txt qui sera utilisé dans tous les exemples mentionnés ci-dessous.

# cat thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

1. Supprimer la nième ligne

‘Nd’ supprime la Nième ligne et imprime les autres lignes.

sed 'Nd' nom de fichier

Selon la méthodologie sed,

  • Il lit la première ligne et la place dans son tampon de modèle.
  • Vérifiez si la commande fournie est vraie pour cette ligne, si elle est vraie, supprime le tampon d'espace de motif et démarre le cycle suivant. c'est-à-dire Lire la ligne suivante.
  • Si la commande fournie n'est pas vraie, comme son comportement normal, elle imprime le contenu du tampon d'espace de modèle.

Par exemple, 3d supprime la 3ème ligne et imprime les autres lignes comme indiqué ci-dessous.

$ sed 3d thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

2. Supprimer À partir de la 3ème ligne et toutes les 2èmes lignes à partir de là.

$ sed '3~2d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
4. Security (Firewall, Network, Online Security etc)
6. Cool gadgets and websites
8. Website Design
10.Windows- Sysadmin, reboot etc.

3. Supprimer de la 4ème à la 8ème ligne du fichier.

$ sed '4,8d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
9. Software Development
10.Windows- Sysadmin, reboot etc.

4. Supprimez la dernière ligne de l'entrée.

$ sed '$d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development

5. Supprimez la ligne qui correspond au modèle donné de l'entrée.

Par exemple, la commande ci-dessous supprime la ligne qui correspond à "Sysadmin".

$ sed /Sysadmin/d thegeekstuff.txt
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development

6. Supprime la ligne à partir de laquelle correspond le motif donné à la fin du fichier.

$ sed '/Website/,$d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)

7. Supprime la ligne à partir de laquelle correspond le motif donné et 2 lignes à côté.

$ sed '/Storage/,+2d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

8. Supprimer la ligne vide d'un fichier à l'aide de sed

Vous pouvez également supprimer les lignes vides avec sed. L'exemple sed suivant montre comment utiliser sed et supprimer les lignes vides.

$ sed '/^$/d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Linux
  1. Utilisation de sed pour rechercher et remplacer des fichiers texte sous Linux

  2. Imprimer des lignes entre (et en excluant) deux motifs ?

  3. Imprimer des lignes entre (et y compris) deux motifs ?

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

  5. grep paires de motifs et fichier

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

Tutoriel Unix Sed :Rechercher et remplacer du texte dans un fichier à l'aide de RegEx

Tutoriel Unix Sed :comment écrire dans un fichier à l'aide de Sed

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

Tutoriel Unix Sed :7 exemples d'opérations Sed Hold et Pattern Buffer

Tutoriel Unix Sed :Opération de fichiers multilignes avec 6 exemples pratiques