GNU/Linux >> Tutoriels Linux >  >> Linux

Comment joindre plusieurs lignes en une seule dans un fichier sous Linux

Dans le didacticiel d'aujourd'hui sur la gestion de fichiers Linux, nous examinerons des approches valides pour joindre plusieurs lignes dans un fichier en une seule ligne. À la fin de cet article, vous aurez ajouté quelques jalons informatiques à votre expérience de gestion de fichiers Linux.

[ Vous pourriez également aimer :Comment joindre deux fichiers texte sous Linux ]

Les possibilités/opportunités pour les utilisateurs exploitant le système d'exploitation Linux via l'interface de ligne de commande continuent d'être infinies. L'une de ces possibilités consiste à transformer un fichier multiligne en un fichier monoligne via une série de commandes Linux. L'objectif de la fusion de telles lignes peut être aussi simple que la nécessité d'ajouter des délimiteurs personnalisés au fichier ciblé.

Énoncé du problème

Étant donné que ce didacticiel se concentrera sur la fusion de plusieurs lignes en une seule ligne sur un fichier ciblé, nous devons créer ce type de fichier à des fins de référence et le remplir avec des données multilignes.

$ sudo nano sample_file.txt

Selon la capture d'écran ci-dessus, nous avons affaire à un fichier (sample_file.txt ) avec six lignes, et il existe trois approches pour joindre ces six lignes :

  1. Sans délimiteurs :J'aime sincèrement les tutoriels LinuxShellTips !
  2. Avec un seul caractère délimiteur :I Genuinely,Love,Linux.Shell,Tips,Tutorials !
  3. Avec plusieurs séparateurs de caractères :I Genuinely;Love;Linux;Shell;Tips;Tutorials !

Comment joindre plusieurs lignes en une seule ligne dans un fichier

Jetons un coup d'œil à ces trois approches pour joindre plusieurs lignes dans un fichier en une seule ligne sous Linux.

1. Utilisation de la commande sed

La puissance du sed L'utilitaire de ligne de commande de traitement de texte nous permettra de joindre les six lignes de notre exemple de fichier texte en abordant les trois approches décrites ci-dessus en référence à presque la même syntaxe de code.

Sans délimiteurs :

$ sed ':a; N; $!ba; s/\n//g' sample_file.txt  

Avec espacement :

$ sed ':a; N; $!ba; s/\n/ /g' sample_file.txt 

Avec un délimiteur de caractère unique, par ex. une virgule :

$ sed ':a; N; $!ba; s/\n/,/g' sample_file.txt 

Avec délimiteur de caractères multiples, par ex. point-virgule et espace blanc :

$ sed ':a; N; $!ba; s/\n/; /g' sample_file.txt 

2. Utilisation de la commande awk

Le awk de Linux command est un autre outil de ligne de commande de traitement de texte réputé. Son approche pour résoudre notre problème multi-lignes au problème mono-ligne peut être analysée et mise en œuvre de la manière suivante :

Sans délimiteurs :

$ awk -v d="" '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

Avec espacement :

$ awk -v d=" " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

Avec un délimiteur de caractère unique, par ex. une virgule :

$ awk -v d="," '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

Avec délimiteur de caractères multiples, par ex. point-virgule et espace blanc :

$ awk -v d="; " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

3. Utilisation de la commande Coller

La coller La commande n'est idéale que pour joindre plusieurs lignes sans délimiteurs, avec espacement et avec un délimiteur de caractère unique. Cet utilitaire réside sous GNU Coreutils package d'où sa disponibilité sur toutes les distributions de système d'exploitation Linux.

Sans délimiteurs :

$ paste -sd '' sample_file.txt

Avec espacement :

$ paste -sd ' ' sample_file.txt

Avec un délimiteur de caractère unique, par ex. un trait de soulignement :

$ paste -sd '_' sample_file.txt

Le trait de soulignement final (_) peut être supprimé en redirigeant la commande paste vers une commande sed :

$ paste -sd '_' sample_file.txt | sed 's/_$/\n/'

Cette approche n'est pas idéale avec plusieurs délimiteurs de caractères, par exemple un point-virgule et un espace blanc en raison de sorties irrégulières comme celles-ci :

$ paste -sd '; ' sample_file.txt

4. Utilisation de la commande tr

La commande tr est également idéal pour joindre plusieurs lignes sans délimiteurs, avec espacement et avec un seul caractère délimiteur.

Sans délimiteurs :

$ tr -d '\n' < sample_file.txt

Avec espacement :

$ tr '\n' ' ' < sample_file.txt

Avec un délimiteur de caractère unique, par ex. une virgule :

$ tr '\n' ',' < sample_file.txt	

Redirigez la sortie vers une commande sed pour vous débarrasser des virgules supplémentaires.

$ tr '\n' ',' < sample_file.txt | sed 's/,,$/\n/'

Nous avons appris avec succès comment joindre plusieurs lignes en une seule ligne dans un fichier sous Linux.


Linux
  1. Comment ajouter plusieurs lignes à un fichier ?

  2. Comment compter les lignes d'un fichier sous UNIX/Linux

  3. Transformer plusieurs lignes en une seule ligne séparée par des virgules

  4. Comment diviser un fichier texte en plusieurs fichiers *.txt ?

  5. Linux - comment formater plusieurs systèmes de fichiers dans un seul fichier ?

Comment joindre plusieurs lignes en une seule dans un fichier sous Linux

Comment mélanger les lignes dans un fichier sous Linux

Comment inverser les lignes d'un fichier par caractère sous Linux

Comment fusionner plusieurs fichiers PDF en un seul PDF sous Linux

Comment joindre/fusionner plusieurs fichiers audio en un seul sous Linux

Comment trouver la ou les lignes les plus longues dans un fichier sous Linux