2010-10-14 14 views
9

tengo algunos archivos con el nombre de inicio como eg_. y sólo cada uno contiene una sola líneabash cat contenido de archivos múltiples en una sola cadena sin nuevas líneas

eg_01.txt: @china: 129,00

eg_02.txt @uk: 219,98

eg_03.txt @USA: 341,90

.. ....

estoy esperando al gato en una sola línea para enviar por URL como: @china: [email protected]: [email protected]: 341,90

yo uso eco cat eg_*

que me dan el aspecto de salida como una cuerda, pero en realidad contiene nueva línea: "@china: 129.00

@uk: 219.98 @USA: 341.90"

¿hay alguna otra manera puedo construir esa cadena que lo esperado y deshacerse de la nueva línea e incluso el espacio? ¿es solo un gato lo suficiente para hacer esto?

gracias de antemano

+0

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

Respuesta

17

siempre se puede canalizarlo a tr

tr "\n" " " 

que elimina todos los saltos de línea en stdin y los reemplaza con espacios

EDIT: según lo sugerido por Bart Sas, también se puede eliminar saltos de línea con tr -d

tr -d "\n" 

(nota: simplemente especificando una cadena vacía a tr para el segundo argumento no lo hará)

+2

Si no desea espacios entre las cadenas puedes usar tr -d '\ n' en su lugar. –

+0

muchas gracias gato eg_ * | tr -d '\ n' hizo el truco – user271785

+0

Nota para un número muy pequeño de personas que tendrán archivos con terminadores de línea de Windows: "\ r \ n" será la cadena utilizada. –

1

Usando sólo un comando

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

En Perl, usted lo haría así:

perl -pe'chomp' eg*.txt 

el -p dice "bucle a través del archivo de entrada y hacer lo que el código se especifica mediante el interruptor -e. El chomp en Perl dice "Eliminar cualquier nueva línea final".

Cuestiones relacionadas