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

2 comentarios en “Concatenar líneas con Perl

  1. Hola, yo soy muy novata en el uso tanto de Debian como de Perl, algunos usos de sed que has publicado me han servido mucho, y por ahora quiero saber como puedo hacer para que a partir de un listado que tengo en un archivo, agarre línea por línea y lo interprete como un patrón que debe buscar en otro archivo, ¿es posible hacer esto? mi listado supera las 3000 líneas por lo que imposible hacerlo a mano

Comments are closed.