N'importe quel caractère ou chaîne peut être remplacé à l'aide de la commande `sed`. Parfois, nous devons remplacer le caractère de nouvelle ligne ( ) dans un fichier par une virgule. Dans cet article, nous utilisons la commande `sed` pour remplacer par une virgule.
Utiliser `sed` pour remplacer par une virgule
De nombreux problèmes peuvent survenir lors du remplacement de par une virgule. Par défaut, chaque ligne se termine par lors de la création d'un fichier. La commande `sed` peut facilement se diviser sur et remplacer la nouvelle ligne par n'importe quel caractère. Un autre délimiteur peut être utilisé à la place de , mais uniquement lorsque GNU sed est utilisé. Lorsque le est manquant dans la dernière ligne du fichier, GNU sed peut éviter d'imprimer . De plus, est généralement ajouté à chaque sortie consécutive de `sed`.
Créer un fichier
Dans cet article, nous allons vous montrer comment utiliser la commande `sed` pour remplacer par une virgule. Pour suivre ce tutoriel, créez un fichier texte nommé Clients.txt avec les informations client tabulaires suivantes.
identifiant | Nom | Téléphone | |
---|---|---|---|
c01 | Maryland Rakib | [email protégé] | 01856233238 |
c02 | Meher Afroze | [email protégé] | 01733536342 |
c03 | Fakrul Ahsan | [email protégé] | 01934737248 |
c04 | Helal Uddin | [email protégé] | 01534895898 |
c05 | Nusrat Jahan | [email protégé] | 01866345254 |
Exemple 1 : remplacez par une virgule en utilisant -z
L'option -z est utilisée pour convertir en caractère nul ( ). Le contenu du fichier est traité comme une seule ligne s'il ne contient aucun caractère nul. La commande `sed` convertira la nouvelle ligne en caractère nul et remplacera chaque par une virgule en utilisant le premier modèle de recherche et de remplacement. Ici, 'g' est utilisé pour rechercher globalement . Avec le deuxième modèle de recherche et de remplacement, la dernière virgule sera remplacée par .
$chatClients.txt
$sed -Avec 's/ /,/g;s/,$/ /'Clients.txt
La sortie suivante sera produite après l'exécution des commandes.
Exemple 2 : remplacez par une virgule en utilisant a, b, $ ! et n
La commande `sed` peut être utilisée pour remplacer par une virgule en utilisant a, b, N et $ ! . Ici, à est utilisé pour ajouter des tâches, b est utilisé pour brancher le contenu, N est utilisé pour passer à la ligne suivante, et $! est utilisé pour empêcher la tâche de remplacement d'être appliquée à la dernière ligne. La commande remplacera chaque avec une virgule sauf la dernière ligne.
$chatClients.txt
$sed ':a;N;$!ba;s/ /,/g'Clients.txt
La sortie suivante sera produite après l'exécution des commandes.
Exemple 3 : Remplacez par une virgule en utilisant H, h, d, x et y
Si vous souhaitez remplacer ) avec une virgule dans un petit fichier, alors la commande `sed` suivante peut être utilisée. Ici, H est utilisé pour ajouter la dernière ligne au texte d'attente, 1h est utilisé pour copier chaque ligne du fichier dans le texte d'attente à partir de la première ligne, $!d est utilisé pour supprimer toutes les lignes sauf la dernière ligne, X est utilisé pour échanger le texte d'attente et l'espace de motif, et et est utilisé pour remplacer chaque dans le texte d'attente avec une virgule.
$chatClients.txt$sed 'H;1h;$!d;x;y/ /,/'Clients.txt
La sortie suivante sera produite après l'exécution des commandes.
Exemple 4 : remplacez par une virgule en utilisant -n ,H, h, g et p
La commande `sed` peut être utilisée pour remplacer avec une virgule avec -n option, qui empêche l'impression automatique. Comme dans l'exemple précédent, H est utilisé ici pour ajouter la dernière ligne au texte d'attente, 1h est utilisé pour copier chaque ligne du fichier dans le texte d'attente, $ fait référence à la dernière ligne du fichier, g est utilisé pour copier à partir du texte d'attente, et p est utilisé pour imprimer.
$chatClients.txt$sed-n'H;1h; ${g; s / /,/g;p}'Clients.txt
La sortie suivante sera produite après l'exécution des commandes ci-dessus.
Exemple 5 : Remplacez par une virgule en utilisant H, x, p
H, x et p ont été expliqués dans les exemples précédents. La première expression de recherche et de remplacement remplacera chaque par une virgule, et la deuxième expression de recherche et de remplacement remplacera une virgule au début d'une ligne par un espace.
$chatClients.txt$sed-n'H;${x;s/ /,/g;s/^,//;p;}'Clients.txt
La sortie suivante sera produite après l'exécution des commandes ci-dessus.
Exemple 6 : Remplacez par une virgule en utilisant N et `cat`
La commande `cat` est utilisée ici pour envoyer le contenu du fichier à la commande `sed`, et N est utilisé pour passer à la ligne suivante.
$chatClients.txt$chatClients.txt| sed 'N;s/ /,/'
La sortie suivante sera produite après l'exécution des commandes ci-dessus.
Conclusion
Il peut être nécessaire de remplacer par une virgule pour transférer des données d'un format de fichier à un autre. Ce type de remplacement peut également être effectué en utilisant d'autres commandes Linux. De nombreuses options de commande, telles que H, N, h et x, peuvent être utilisées avec la commande `sed` pour effectuer cette tâche. Ce tutoriel passe en revue plusieurs manières d'utiliser la commande `sed` pour remplacer par une virgule.