# rm-rf.es

Concatenar líneas con Perl

Os dejo un comando rápido por si necesitáis concatenar líneas de un fichero con Perl. Se puede hacer con sed o awk pero este método es sencillo y funciona bien:

perl -pe 'chomp;$i++;unless($i%2){$_.="\n"};' <fichero>

En este caso concatena cada dos líneas del fichero, podemos cambiar ese parámetro donde véis ($i%2), simplemente especificad otro número y lo utilizará para la concatenación, vamos a ver un ejemplo:

foo.txt:

1 
2 
3 
4  
5

Vamos a concatenar cada dos líneas:

$ perl -pe 'chomp;$i++;unless($i%2){$_.="\n"};' foo.txt 
1 2 
3 4 
5

Y si cambiamos el parámetro a 3:

$ perl -pe 'chomp;$i++;unless($i%3){$_.="\n"};' foo.txt 
1 2 3 
4 5

Si revisáis bien el comando veréis que también podéis modificar el comportamiento para que en lugar de un salto de línea ({$_.=»\n»}) utilice otro delimitador, como tabulación por ejemplo ({$_.=»\t»}:

$ perl -pe 'chomp;$i++;unless($i%3){$_.="\t"};' foo.txt 
1 2 3 	4 5
Salir de la versión móvil