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
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
Quizás sería más sencillo si usaras un ‘for’. (for i in …)