2012-03-06 32 views
15

Quiero agregar una cadena específica al comienzo de cada línea en un archivo. Por lo tanto, si tengo los siguientes dos líneas en Unarchivo.txt y quiero añadir una cadena de fecha 03/06/2012 con pipaCómo agregar una cadena al comienzo de cada línea en un archivo

Hello|there|john 
Hello|there|joel 

Me gustaría tener-

03/06/2012|Hello|there|john 
03/06/2012|Hello|there|joel 

¿Cómo lograr que ?

Nota Tengo 1,3 millones de líneas en el archivo.

Respuesta

24
$ awk '{print "03/06/2012|" $0;}' input.txt > output.txt 

Toma aproximadamente 0,8 segundos para un archivo con 1.3M líneas en hardware promedio de 2010. solución

+0

Gracias. Funciona de maravilla. – DragonBorn

3
sed -i 's/^/03\/06\/2012|/' input.txt 
+3

sed le permite usar cualquier carácter no utilizado en lugar de '/' como el separador de campo del comando 's'. De esta forma no necesita meterse con el escape de los '/' 's en la fecha. p.ej. 'sed -i 's #^# 03/06/2012 | #' input.txt' –

+0

Sí, esa es una solución mejor. Podemos usar cualquier personaje. ¡Gracias! – SNathan

0

Perl:

perl -ne 'print "03/06/2012|$_"' input.txt > output.txt

Sólo por diversión, me Benchmarked 10 carreras en/tmp:

   Rate  awk perl_5.6.1  sed perl_5.22 perl_5.20 
awk  2.08/s   --  -10%  -10%  -26%  -32% 
perl_5.6.1 2.32/s  11%   --  -0%  -17%  -24% 
sed  2.33/s  12%   0%   --  -17%  -24% 
perl_5.20 3.06/s  47%  32%  31%   9%   -- 

Probado con un archivo de entrada de línea 1.3M creado aquí:
perl -le 'while (1){exit if ++$n > 1300000; print $n}' > input.txt

Cuestiones relacionadas