2010-10-14 7 views
9

J'ai obtenu quelques fichiers avec le nom début comme eg_. et que chacune contient une seule lignebash chat plusieurs fichiers contenus dans une seule chaîne sans les nouvelles lignes

eg_01.txt: @china: 129,00

eg_02.txt @uk: 219,98

eg_03.txt @USA: 341,90

.. ....

je me attends à chat eux dans une seule ligne à envoyer par URL comme: @china: [email protected]: [email protected]: 341,90

j'utilise écho cat eg_*

il me donne l'apparence de sortie comme une chaîne, mais il contient en fait une nouvelle ligne: "@china: 129,00

@uk: 219,98 @USA: 341,90"

Y at-il une autre façon de construire cette chaîne qui attendait et se débarrasser de la nouvelle ligne et même l'espace? est seulement le chat assez pour faire ceci?

merci à l'avance

+0

En relation: http://stackoverflow.com/questions/8739427/bash-add-string-to-the-end-of-the-file-without-line-break – redolent

Répondre

17

vous pouvez toujours conduit à tr

tr "\n" " " 

qui supprime tous les sauts de ligne sur stdin et les remplace par des espaces

EDIT: comme suggéré par Bart Sas, vous pouvez également supprimer les nouvelles lignes avec tr -d

tr -d "\n" 

(note: il suffit de spécifier une chaîne vide tr pour le second argument ne fera pas)

+2

Si vous ne voulez pas d'espace entre les chaînes vous pouvez utiliser tr -d '\ n' à la place. –

+0

merci beaucoup cat eg_ * | tr -d '\ n' a fait l'affaire – user271785

+0

Note pour un très petit nombre de personnes qui auront des fichiers avec des terminateurs de ligne Windows: "\ r \ n" sera la chaîne utilisée. –

1

En utilisant une seule commande

url=$(awk '{printf "%s",$0}' eg*) 
1

En Perl, vous feriez comme ceci:

perl -pe'chomp' eg*.txt 

la -p dit boucle » dans le fichier d'entrée et faire tout ce que le code est spécifié par le commutateur -e. Le chomp dans Perl dit "Supprimer les nouvelles lignes de fin."

Questions connexes