Comment utiliser SED pour modifier le fichier en place

Comment utiliser SED pour modifier le fichier en place

Linux prend en charge divers types d'utilitaires de ligne de commande pour automatiser les tâches qui font de Linux dans la ligne de système d'exploitation principale; En raison de son importance et de son utilisation, il a des centaines de distributions basées sur Linux et ils prennent en charge de nombreuses commandes pour effectuer des actions automatiquement.

Il y a un énorme pool de commandes disponibles pour Ubuntu et SED Command Utility en fait partie; La commande SED peut être utilisée pour effectuer des opérations fondamentales sur des fichiers texte comme l'édition, supprimer du texte dans un fichier.

Parallèlement à ces actions primaires, SED fournit une longue liste d'options prises en charge qui peuvent être utilisées pour manipuler la sortie en fonction des exigences des utilisateurs, inspirées par cela; Nous avons compilé un guide qui démontrera pour conserver les modifications du fichier d'origine à l'aide de la commande SED:

Comment modifier le fichier en place à l'aide de la commande SED

Cette option de commande SED est utilisée pour modifier le fichier et enregistrer les modifications à l'original et peut être utilisée avec toutes les opérations de la commande SED:

La syntaxe de cette option est décrite ci-dessous:

Syntaxe

SED -I Commande [Nom de fichier]

ou

SED - Commande en place [nom de fichier]

Dans la syntaxe donnée ci-dessus, l'option «-i» est constante (lorsque vous apportez des modifications de fichiers) et le mot-clé «Commande» contient les opérations (substitution, délétion, ajout) effectuées en utilisant la commande SED; Et enfin, le «nom de fichier» dirige le nom du fichier où toutes les actions sont prises qui sont associées à la commande SED.

Nous avons pris un fichier texte qui contient quelques lignes de texte:

Extraitons le contenu de "exampir.SMS”Fichier à l'aide de la commande mentionnée ci-dessous:

$ Cat Examp.SMS

Commençons par l'utilisation de base que si nous utilisons SED sans «-je”Option puis il imprimerait le résultat sur le terminal et le fichier d'origine sera inchangé (comme vérifié à l'aide de la commande« Cat ») comme indiqué ci-dessous:

Différence entre le fichier d'édition en place et l'édition de fichiers de la commande SED

Dans la commande mentionnée ci-dessous; "s"Est utilisé pour la substitution et il remplacera le mot"Debian" avec "Ubuntu". De plus, la lettre «g«À la fin de cette commande, c'est pour Global Action, signifie que le remplacement serait effectué dans l'ensemble du fichier:

$ SED's / Debian / Ubuntu / G 'Examp.SMS

Et maintenant, utilisez la même commande avec «-je”Option comme indiqué ci-dessous; On remarque qu'avec l'aide de «-je"Le contenu dans le fichier d'origine ("exampir.SMS») Est également modifié maintenant, comme affiché ci-dessous:

Note: Vous pouvez utiliser "-en place" au lieu de "-je» Les deux options ont la même fonctionnalité:

$ sed -i's / debian / ubuntu / g 'examp.SMS

Comment modifier une ligne de fichier spécifique en place à l'aide de la commande SED

Et si vous souhaitez modifier le contenu d'un numéro de ligne spécifique, vous pouvez ajouter de la valeur numérique avec une lettre «S»; Par exemple, la commande ci-dessous remplacera «Ubuntu» par «Debian» uniquement sur le numéro de ligne «2» et une fois que vous avez spécifié le numéro de ligne, le but de la lettre «G» est annulé afin que vous puissiez également le supprimer:

$ sed -i '2s / ubuntu / debian /' examp.SMS

De plus, vous pouvez placer "$"Signe avec"s»Mot-clé pour effectuer uniquement les modifications sur la dernière ligne du fichier; Comme la commande écrite ci-dessous mettra le mot «Ubuntu" au lieu de "Linux"Sur la dernière ligne de"exampir.SMS»:

$ sed -i '$ s / ubuntu / linux-mint /' examp.SMS

Comment supprimer une ligne dans un fichier à l'aide de la commande SED

L'option en place a une utilisation approfondie dans la commande SED comme discuté ci-dessus; En plus de remplacer les mots dans une ligne, on peut supprimer la ligne entière et enregistrer la sortie dans le fichier parent à l'aide de «-je”Option: la commande mentionnée ci-dessous supprimera le numéro de ligne"2"Du fichier" Examp.SMS":

$ Sed -i '2D' Examp.SMS

Et si vous souhaitez supprimer les lignes sauf le numéro de ligne "2«Ensuite, vous devez écrire la commande comme mentionné ci-dessous:

$ sed -i '2!D 'Examp.SMS

Conclusion

Ubuntu prend en charge une variété de commandes qui peuvent être utilisées pour effectuer les opérations principales sur des fichiers texte comme la tête, ou les commandes de queue peuvent être utilisées pour imprimer les lignes disponibles au début ou à la fin d'un fichier texte. Cependant, il y a certaines limites, disons que vous ne pouvez pas imprimer uniquement la ligne numéro 2 d'un fichier texte à l'aide de la commande Head (bien que la ligne numéro 2 soit disponible dans la section Head du fichier). La commande SED mène d'autres commandes à cet égard; Cette commande dans Ubuntu aide à effectuer des opérations de base sur les fichiers texte, comme la substitution, l'addition, la suppression, etc. Il est observé que si la commande SED est utilisée sauf l'option «-i», le résultat serait imprimé sur le terminal uniquement. Dans cet article, l'option en place de la commande SED est décrite en détail et peut être adoptée avec toutes les opérations SED. Pour obtenir un aperçu approfondi de cette option, nous avons essayé de l'utiliser avec autant de commandes pour construire des bases pour les utilisateurs novices.