Nous avons abordé certaines des options de la commande SED dans la commande Sed sous Linux/Unix avec des exemples
SED est utilisé pour la recherche, le filtrage, la substitution de texte, le remplacement et les manipulations de texte comme l’insertion, la recherche de suppression, etc. C’est l’un des utilitaires puissants offerts par les systèmes Linux/Unix. Nous pouvons utiliser sed avec des expressions régulières. J’espère qu’au moins vous avez les connaissances de base sur les expressions régulières de Linux.
Il fournit une édition non interactive des fichiers texte thats why it’s used to automate editing and has two buffers – pattern buffer and hold buffer. Sed utilise Patter buffer quand il lit les fichiers, ligne par ligne et que la ligne actuellement lue est insérée dans pattern buffer tandis que hold buffer est un stockage à long terme, il attrape l’information, la stocke et la réutilise quand elle est nécessaire. Initialement, les deux sont vides. La commande SED est utilisée pour effectuer différentes opérations sans même ouvrir le fichier.
sed syntaxe générale –
sed OPTIONS…
Créer d’abord un fichier a.txt sur lequel je vais effectuer des opérations pour les commandes SED. Dans ce blog, j’ai utilisé le fichier « a.txt » pour expliquer tous les exemples. Le blog deviendra trop long si j’écris la sortie de chaque commande sed. Donc, vous pouvez vous référer au même fichier pour pratiquer toutes les commandes initialement.
# cat a.txtlife isn't meant to be easy, life is meant to be lived.Try to learn & understand something new everyday in life.Respect everyone & most important love everyone.Don’t hesitate to ask for love & don’t hesitate to show love too.Life is too short to be shy.In life experience will help you differentiating right from wrong.
# Commençons par l’espacement des fichiers
1 – Insérez une ligne vierge après chaque ligne –
# sed G a.txt
2 – Insérer deux lignes vides –
# sed 'G;G' a.txt
3 – Supprimer les lignes vides et insérer une ligne vide après chaque ligne –
# sed '/^$/d;G' a.txt
4 – Insérer une ligne noire au-dessus de chaque ligne qui correspond à « love » –
# sed '/love/{x;p;x;}' a.txt
5 – Insérez une ligne blanche sous chaque ligne qui correspond à « love » –
# sed '/love/G' a.txt
6 – Insérez 5 espaces à gauche de chaque ligne –
# sed 's/^/ /' a.txt
# Numérotation des lignes
1 – Numérotez chaque ligne d’un fichier (alignement à gauche). **=** est utilisé pour numéroter la ligne. \t est utilisé pour la tabulation entre le numéro et la phrase –
# sed = a.txt | sed 'N;s/\n/\t/'
2 – Numéroter chaque ligne d’un fichier (numéro à gauche, alignement à droite). Cette commande est similaire à `cat -n nom de fichier`.
# sed = a.txt | sed 'N; s/^/ /; s/ *\(.\{4,\}\)\n/\1 /'
3 – Numéroter chaque ligne d’un fichier, uniquement si la ligne n’est pas vide –
# sed '/./=' a.txt | sed '/./N; s/\n/ /'
# Supprimer des lignes
1 – Supprimer une ligne particulière –
Syntaxe : sed ‘nd’ filename
Exemple :
# sed '5d' a.txt
2 – Supprimer la dernière ligne
Syntaxe : sed ‘$d’ nom de fichier
3 – Supprimer la ligne de la plage x à y
Syntaxe : sed ‘x,yd’ nom de fichier
Exemple :
# sed '3,5d' a.txt
4 – Supprimer de la nième à la dernière ligne
Syntaxe : sed ‘nth,$d’ nom du fichier
Exemple :
# sed '2,$d' a.txt
5 – Supprimer la ligne correspondant au motif –
Syntaxe : sed ‘/pattern/d’ nom du fichier
Exemple :
# sed '/life/d' a.txt
6 – Supprimer les lignes à partir de la nième ligne et chaque 2ème ligne à partir de là –
Syntaxe : sed ‘n~2d’ nom de fichier
Exemple :
# sed '3~2d' a.txt
7 – Supprimer les lignes qui correspondent au motif et les 2 lignes qui suivent –
Syntaxe : sed ‘/pattern/,+2d’ nom de fichier
Exemple :
# sed '/easy/,+2d' a.txt
8 – Supprimer les lignes vides
# sed '/^$/d' a.txt
9 – Supprimer les lignes vides ou celles qui commencent par « # » –
# sed -i '/^#/d;/^$/d' a.txt
# Visualiser/imprimer les fichiers
Si nous voulons visualiser le contenu d’un fichier, alors nous utilisons la commande cat et si nous voulons voir le bas et le haut du contenu de n’importe quel fichier, nous utilisons des outils tels que head et tail. Mais que faire si nous avons besoin de visualiser une section particulière au milieu d’un fichier ? Ici, nous allons discuter, comment utiliser la commande SED pour visualiser une section de n’importe quel fichier.
1 – Visualiser un fichier de la plage x à y –
Syntaxe : sed -n ‘x,yp’ nom de fichier
Exemple :
# sed -n '2,5p' a.txt
2 – Visualiser l’ensemble du fichier sauf la plage donnée –
Syntaxe : sed ‘x,yd’ nom de fichier
Exemple :
# sed '2,4d' a.txt
3 – Imprimer la nième ligne du fichier –
Syntaxe : sed -n ‘adresse’p nom de fichier
Exemple :
# sed -n '4'p a.txt
4 – Imprimer les lignes de la xième ligne à la yième ligne.
Syntaxe : sed -n ‘x,y’p nom de fichier
Exemple :
# sed -n '4,6'p a.txt
5 – Imprimer uniquement la dernière ligne –
Syntaxe : sed -n ‘
# sed -n '3,$'p a.txt
Imprimer le motif
7 – Imprimer uniquement la ligne qui correspond au motif –
Syntaxe : sed -n /pattern/p filename
Exemple :
# sed -n /every/p a.txt
8 – Imprimer les lignes qui correspondent au motif i.e de l’entrée à la xème ligne.
Syntaxe : sed -n ‘/pattern/,xp’ nom du fichier
Exemple :
# sed -n '/everyone/,5p' a.txt
La ligne suivante imprime les lignes qui correspondent au motif, la 3ème ligne correspond au motif « everyone », donc elle imprime de la 3ème ligne à la 5ème ligne. Utilisez $ à la place de 5, si vous voulez imprimer le fichier jusqu’à la fin.
9 – Imprime les lignes depuis la xième ligne de l’entrée, jusqu’à la ligne qui correspond au motif. Si le motif n’est pas trouvé alors il imprime jusqu’à la fin du fichier.
Syntaxe : sed -n ‘x,/pattern/p’ nom de fichier
Exemple :
sed -n '1,/everyone/p' a.txt
10 – Imprime les lignes qui correspondent au motif jusqu’aux xième lignes suivantes –
Syntaxe : sed -n ‘/pattern/,+xp’ nom de fichier
Exemple :
sed -n '/learn/,+2p' a.txt
# Remplacement avec la commande sed
1 – Modifier la première occurrence du motif –
# sed 's/life/leaves/' a.txt
2 – Remplacer la nième occurrence d’un motif dans une ligne –
Syntaxe : sed ‘s/ancien_motif/nouveau_motif/n’ nom de fichier
Exemple :
# sed 's/to/two/2' a.txt
Nous avons écrit « 2 » car nous remplaçons la deuxième occurrence. De même, vous pouvez utiliser 3, 4 etc selon le besoin.
3 – Remplacer toutes les occurrences du motif dans une ligne.
# sed 's/life/learn/g' a.txt
4 – Remplacer le motif de la nième occurrence à toutes les occurrences dans une ligne.
Syntaxe : sed ‘s/ancien_motif/nouveau_motif/ng’ nom du fichier
Exemple :
# sed 's/to/TWO/2g' a.txt
Note – Cette commande sed remplace les deuxième, troisième, etc. occurrences du motif « à » par « DEUX » dans une ligne.
Si vous souhaitez imprimer uniquement les lignes remplacées, alors utilisez l’option « -n » avec le drapeau d’impression « /p » pour afficher uniquement les lignes remplacées –
# sed -n 's/to/TWO/p' a.txt
Et si vous souhaitez imprimer deux fois les lignes remplacées, alors utilisez uniquement l’indicateur d’impression « /p » sans l’option « -n » –
# sed 's/to/TWO/p' a.txt
5 – Remplacement du motif sur un numéro de ligne spécifique. Ici, « m » est le numéro de ligne.
Syntaxe : sed ‘m s/ancien_motif/nouveau_motif/’ nom de fichier
Exemple :
# sed '3 s/every/each/' a.txt
Si vous souhaitez imprimer uniquement les lignes remplacées –
# sed -n '3 s/every/each/p' a.txt
6 – Remplacer une chaîne de caractères sur une plage définie de lignes –
Syntaxe : sed ‘x,y s/ancien_motif/nouveau_motif/’ nom de fichier
où,
x = numéro de la ligne de départ
et y = numéro de la ligne de fin
Exemple :
# sed '2,5 s/to/TWO/' a.txt
Note – $ peut être utilisé à la place de « y » si nous souhaitons changer le motif jusqu’à la dernière ligne du fichier.
Exemple :
# sed '2,$ s/to/TWO/' a.txt
7 – Si vous souhaitez remplacer le motif afin d’ignorer la casse des caractères (commençant par une majuscule ou une minuscule), alors il existe deux façons de remplacer de tels motifs –
Frist, En utilisant le drapeau d’impression « /i » –
Syntaxe : sed ‘s/ancien_motif/nouveau_motif/i’ nom de fichier
Exemple :
# sed 's/life/Love/i' a.txt
Deuxièmement, En utilisant des expressions régulières –
# sed 's/ife/Love/g' a.txt
8 – Remplacer plusieurs espaces par un seul espace –
# sed 's/ */ /g' filename
9 – Remplacer un motif suivi d’un autre motif –
Syntaxe : sed ‘/followed_pattern/ s/old_pattern/new_pattern/’ filename
Exemple :
# sed '/is/ s/live/love/' a.txt
10 – Remplacer un motif par un autre sauf à la nième ligne.
Syntaxe : sed ‘n!s/ancien_motif/nouveau_motif/’ nom de fichier
Exemple :
# sed -i '5!s/life/love/' a.txt
p nom de fichier
6 – Imprimer de la nième ligne à la fin du fichier –
Syntaxe : sed -n ‘n,$p’ nom de fichier
Exemple :
# sed -n '3,$'p a.txt
Pattern Printing
7 – Print the line only which matches the pattern –
Syntax: sed -n /pattern/p filename
Example :
# sed -n /every/p a.txt
8 – Print lines which matches the pattern i.e from input to xth line.
Syntax: sed -n ‘/pattern/,xp’ filename
Example :
# sed -n '/everyone/,5p' a.txt
Following prints lines which matches the pattern, 3rd line matches the pattern « everyone”, so it prints from 3rd line to 5th line. Use $ in place of 5, if want to print the file till end.
9 – Prints lines from the xth line of the input, up-to the line which matches the pattern. If the pattern doesn’t found then it prints up-to end of the file.
Syntax: sed -n ‘x,/pattern/p’ filename
Example :
sed -n '1,/everyone/p' a.txt
10 – Print the lines which matches the pattern up-to the next xth lines –
Syntax: sed -n ‘/pattern/,+xp’ filename
Example :
sed -n '/learn/,+2p' a.txt
# Replacement with the sed command
1 – Change the first occurrence of the pattern –
# sed 's/life/leaves/' a.txt
2 – Replacing the nth occurrence of a pattern in a line –
Syntax: sed ‘s/old_pattern/new_pattern/n’ filename
Example :
# sed 's/to/two/2' a.txt
We wrote « 2” because we replaces the second occurrence. Likewise you can use 3, 4 etc according to need.
3 – Replacing all the occurrence of the pattern in a line.
# sed 's/life/learn/g' a.txt
4 – Replace pattern from nth occurrence to all occurrences in a line.
Syntax: sed ‘s/old_pattern/new_pattern/ng’ filename
Example :
# sed 's/to/TWO/2g' a.txt
Note – This sed command replaces the second, third, etc occurrences of pattern « to” with « TWO” in a line.
If you wish to print only the replaced lines, then use « -n” option along with « /p” print flag to display only the replaced lines –
# sed -n 's/to/TWO/p' a.txt
And if you wish to print the replaced lines twice, then only use « /p” print flag without « -n” option-
# sed 's/to/TWO/p' a.txt
5 – Replacing pattern on a specific line number. Here, « m” is the line number.
Syntax: sed ‘m s/old_pattern/new_pattern/’ filename
Example :
# sed '3 s/every/each/' a.txt
If you wish to print only the replaced lines –
# sed -n '3 s/every/each/p' a.txt
6 – Replace string on a defined range of lines –
Syntax: sed ‘x,y s/old_pattern/new_pattern/’ filename
where,
x = starting line number
and y = ending line number
Example :
# sed '2,5 s/to/TWO/' a.txt
Note – $ can be used in place of « y” if we wish to change the pattern up-to last line in the file.
Example :
# sed '2,$ s/to/TWO/' a.txt
7 – If you wish to replace pattern in order to ignore character case (beginning with uppercase or lowercase), then there are two ways to replace such patterns –
Frist, By using « /i” print flag –
Syntax: sed ‘s/old_pattern/new_pattern/i’ filename
Example :
# sed 's/life/Love/i' a.txt
Second, By using regular expressions –
# sed 's/ife/Love/g' a.txt
8 – To replace multiple spaces with a single space –
# sed 's/ */ /g' filename
9 – Replace one pattern followed by the another pattern –
Syntax: sed ‘/followed_pattern/ s/old_pattern/new_pattern/’ filename
Example :
# sed '/is/ s/live/love/' a.txt
10 – Replace a pattern with other except in the nth line.
Syntax: sed ‘n!s/old_pattern/new_pattern/’ filename
Example :
# sed -i '5!s/life/love/' a.txt
0 commentaire