GNU/Linux >> Tutoriels Linux >  >> Linux

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

Cet article fait partie de la série de didacticiels sur la commande Unix sed en cours. Dans nos articles précédents, nous avons appris sed avec des commandes uniques :impression, suppression, substitution et écriture de fichier.

Sed fournit de nombreuses commandes pour effectuer un certain nombre d'opérations avec les lignes d'un fichier.

Dans cet article, voyons comment ajouter, insérer, remplacer une ligne dans un fichier et comment obtenir les numéros de ligne d'un fichier.

  • Ajouter des lignes
  • Insérer des lignes
  • Remplacer les lignes
  • Compter les lignes

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

$cat thegeekstuff.txt
Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Ajouter des lignes à l'aide de la commande Sed

Sed fournit la commande "a" qui ajoute une ligne après chaque ligne avec l'adresse ou le modèle.

Syntax:

#sed 'ADDRESS a\
	Line which you want to append' filename

#sed '/PATTERN/ a\
	Line which you want to append' filename

Sed Append Example 1. Ajouter une ligne après la 3ème ligne du fichier.

Ajoutez la ligne "Gadgets et sites Web sympas" après la 3ème ligne. La commande sed "a" insère la ligne après la correspondance.

$ sed '3 a\
> Cool gadgets and websites' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Cool gadgets and websites
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed Append Example 2. Ajouter une ligne après chaque ligne correspondant au modèle

La commande sed ci-dessous ajoutera la ligne "Linux Scripting" après chaque ligne correspondant au modèle "Sysadmin".

$ sed '/Sysadmin/a \
> Linux Scripting' thegeekstuff.txt

Linux Sysadmin
Linux Scripting
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.
Linux Scripting

Sed Append Example 3. Ajouter une ligne à la fin du fichier

L'exemple suivant, ajoute la ligne "Website Design" à la fin du fichier.

$ sed '$ a\
> Website Design' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.
Website Design

Insérer des lignes à l'aide de la commande Sed

La commande Sed "i" est utilisée pour insérer une ligne avant chaque ligne avec la plage ou le motif.

Syntax:

#sed 'ADDRESS i\
	Line which you want to insert' filename

#sed '/PATTERN/ i\
	Line which you want to insert' filename

Sed Insert Example 1. Ajouter une ligne avant la 4ème ligne de la ligne.

Ajoutez une ligne "Gadgets et sites Web sympas" avant la 4ème ligne. La commande "a" insère la ligne après la correspondance alors que "i" insère avant la correspondance.

$ sed '4 i\
> Cool gadgets and websites' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Cool gadgets and websites
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed Insert Example 2. Insérer une ligne avant chaque ligne avec le motif

La commande sed ci-dessous ajoutera une ligne "Linux Scripting" avant chaque ligne correspondant au modèle appelé "Sysadmin".

$ sed '/Sysadmin/i \
> Linux Scripting' thegeekstuff.txt

Linux Scripting
Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Linux Scripting
Windows- Sysadmin, reboot etc.

Sed Insert Example 3. Insérer une ligne avant la dernière ligne du fichier.

Ajoutez une ligne "Conception de site Web" avant la dernière ligne du fichier.

$ sed '$ i\
> Website Design' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Website Design
Windows- Sysadmin, reboot etc.

Remplacer les lignes à l'aide de la commande Sed

La commande "c" dans sed est utilisée pour remplacer toutes les correspondances de ligne avec le modèle ou les plages avec la nouvelle ligne donnée.

Syntax:

#sed 'ADDRESS c\
	new line' filename

#sed '/PATTERN/ c\
	new line' filename

Sed Replace Example 1. Remplacer une première ligne du fichier

La commande ci-dessous remplace la première ligne du fichier par "The Geek Stuff".

$ sed '1 c\
> The Geek Stuff' thegeekstuff.txt

The Geek Stuff
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed Replace Example 2. Remplacer une ligne qui correspond au modèle

Remplacez toutes les lignes qui ont un modèle "Linux Sysadmin" par "Linux Sysadmin - Scripting".

$ sed '/Linux Sysadmin/c \
> Linux Sysadmin - Scripting' thegeekstuff.txt

Linux Sysadmin - Scripting
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed Replace Example 3. Remplacer la dernière ligne du fichier

La commande Sed donnée ci-dessous remplace la dernière ligne du fichier par "Dernière ligne du fichier".

$ sed '$ c\
> Last line of the file' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Last line of the file

Imprimer les numéros de ligne à l'aide de la commande Sed

"=" est une commande dans sed pour imprimer le numéro de ligne actuel sur la sortie standard.

Syntax:

#sed '=' filename

La syntaxe de la commande d'envoi ci-dessus imprime le numéro de ligne sur la première ligne et la ligne d'origine du fichier sur la ligne suivante.

La commande sed '=' n'accepte qu'une seule adresse, donc si vous voulez imprimer le numéro de ligne pour une plage de lignes, vous devez utiliser les accolades.

Syntax:

# sed -n '/PATTERN/,/PATTERN/ {
=
p
}' filename

Sed Line Number Example 1. Trouvez le numéro de ligne qui contient le motif

La commande sed ci-dessous imprime le numéro de ligne correspondant au modèle "Bases de données"

$ sed -n '/Databases/=' thegeekstuff.txt

2

Exemple de numéro de ligne Sed 2. Impression de la plage de numéros de ligne

Imprimez les numéros de ligne pour les correspondances de lignes du modèle "Oracle" à "Productivité".

$ sed -n '/Oracle/,/Productivity/{
> =
> p
> }' thegeekstuff.txt

2
Databases - Oracle, mySQL etc.
3
Security (Firewall, Network, Online Security etc)
4
Storage in Linux
5
Productivity (Too many technologies to explore, not much time available)

Sed Line Number Example 3. Imprimer le nombre total de lignes dans un fichier

Le numéro de ligne de la dernière ligne du fichier sera le nombre total de lignes dans un fichier. Le motif $ spécifie la dernière ligne du fichier.

$ sed -n '$=' thegeekstuff.txt

6

Linux
  1. Comment ajouter plusieurs lignes à un fichier ?

  2. Commande unix rapide pour afficher des lignes spécifiques au milieu d'un fichier ?

  3. sed - insérer une ligne après X lignes après la correspondance

  4. Rechercher et remplacer du texte dans un fichier entre une plage de lignes à l'aide de sed

  5. remplacer les lignes d'un fichier par les lignes d'un autre par numéro de ligne

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 :Supprimer des lignes de fichier à l'aide d'adresses et de modèles

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

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

Comment utiliser Sed pour rechercher et remplacer une chaîne dans un fichier