[SHELL] Plusieurs lignes sur une ligne
magnetyk
-
magnetyk -
magnetyk -
Bonjour,
Je cherche à faire 2 choses à partir d'un fichier contenant :
1) Je voudrais concaténer chaque ligne sur une seule ligne d'un autre fichier
2) Chaque ligne insérée doit avoir un double-quote avant et apres (ainsi qu'un espace entre chaque ligne copiée)
Le fichier résultat ressemblerait donc à ça :
J'ai vu que certaines personnes sont spécialisées dans les scripts shell (ou perl).
je vous remercie d'avance des réponses :) Bon week-end !!
Je cherche à faire 2 choses à partir d'un fichier contenant :
/home/test/fichier1.txt ... /home/test/fichier2.exe ... /home/test/fichier3.xls
1) Je voudrais concaténer chaque ligne sur une seule ligne d'un autre fichier
2) Chaque ligne insérée doit avoir un double-quote avant et apres (ainsi qu'un espace entre chaque ligne copiée)
Le fichier résultat ressemblerait donc à ça :
"/home/test/fichier1.txt" "/home/test/fichier2.exe" "/home/test/fichier3.xls"
J'ai vu que certaines personnes sont spécialisées dans les scripts shell (ou perl).
je vous remercie d'avance des réponses :) Bon week-end !!
A voir également:
- [SHELL] Plusieurs lignes sur une ligne
- Partager photos en ligne - Guide
- Classic shell - Télécharger - Personnalisation
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Formulaire en ligne de meta - Guide
4 réponses
Salut Magnetyk,
Si tu ne reçois pas de réponse, c'est que ta question est probablement difficilement cernable.
Bon, alors, par exemple :
Je cherche à faire 2 choses à partir d'un fichier contenant :
/home/test/fichier1.txt
...
/home/test/fichier2.exe
...
/home/test/fichier3.xls
Ton fichier contient donc 5 lignes seulement, dont deux lignes intercalées composées de trois points à la suite. Tu as plus vite fait de faire à la main ce que tu veux faire :P
A moins que tu veuilles dire autre chose ?
Dal
Si tu ne reçois pas de réponse, c'est que ta question est probablement difficilement cernable.
Bon, alors, par exemple :
Je cherche à faire 2 choses à partir d'un fichier contenant :
/home/test/fichier1.txt
...
/home/test/fichier2.exe
...
/home/test/fichier3.xls
Ton fichier contient donc 5 lignes seulement, dont deux lignes intercalées composées de trois points à la suite. Tu as plus vite fait de faire à la main ce que tu veux faire :P
A moins que tu veuilles dire autre chose ?
Dal
Salut,
Que veut dire les ... entre tes lignes?
Tu as combiens des lignes dans ton fichier?
Voilà un exemple en Perl (j'ai utilisé comme exemple tes lignes).
Pour mieux faire il faut savoir la structure de tes fichiers.
Le resultat
lami20j
P.S. C'était mieux dans le forum Programmation
Que veut dire les ... entre tes lignes?
Tu as combiens des lignes dans ton fichier?
Voilà un exemple en Perl (j'ai utilisé comme exemple tes lignes).
Pour mieux faire il faut savoir la structure de tes fichiers.
#!/usr/bin/perl
use warnings;
open WRITE, ">>./resultat.txt" or die "E/S : $!\n";
while (<>){
next unless /^\/home/;
s/^(.*)\n/"$1" /;
print WRITE $_;
}
print WRITE "\n";
Le resultat
[lamitest@localhost trash]$ cat magnetyk.txt /home/test/fichier1.txt ... /home/test/fichier2.exe ... /home/test/fichier3.xls [lamitest@localhost trash]$ cat magnetyk2.txt /home/test/fichier4.txt ... /home/test/fichier5.exe ... /home/test/fichier6.xls [lamitest@localhost trash]$ perl ccm_magnetyk_lines.pl magnetyk.txt [lamitest@localhost trash]$ cat resultat.txt "/home/test/fichier1.txt" "/home/test/fichier2.exe" "/home/test/fichier3.xls" [lamitest@localhost trash]$ perl ccm_magnetyk_lines.pl magnetyk2.txt [lamitest@localhost trash]$ cat resultat.txt "/home/test/fichier1.txt" "/home/test/fichier2.exe" "/home/test/fichier3.xls" "/home/test/fichier4.txt" "/home/test/fichier5.exe" "/home/test/fichier6.xls" [lamitest@localhost trash]$
lami20j
P.S. C'était mieux dans le forum Programmation
Salut,
Si les "..." ne sont qu'une abréviation pour signifier des lignes de texte intermédiaires identiques à celles d'avant et d'après, alors un simple :
Éventuellement si tu dois récupérer le résultat dans un autre fichier (dans l'exemple là, c'est sur la sortie standard, l'écran), redirige le tout vers un autre fichier alors...
Si les "..." ne sont qu'une abréviation pour signifier des lignes de texte intermédiaires identiques à celles d'avant et d'après, alors un simple :
while read ligne; do echo -e "\"$ligne\" \c"; done < ton_fichierdevrait suffire.
Éventuellement si tu dois récupérer le résultat dans un autre fichier (dans l'exemple là, c'est sur la sortie standard, l'écran), redirige le tout vers un autre fichier alors...
while read ligne; do echo -e "\"$ligne\" \c"; done < ton_fichier > resultat.txt;-))
Merci beaucoup pour vos éléments de réponse. Désolé de ne pas avoir été assez spécifique dans ma question, les trois points (...) signifiaient en fait qu'il y avait un nombre indécis de lignes dans mon fichier texte.
J'ai opté pour la dernière solution postée par jipicy :) Merci de votre aide, j'hésiterai pas à revenir sur ce forum !
J'ai opté pour la dernière solution postée par jipicy :) Merci de votre aide, j'hésiterai pas à revenir sur ce forum !