2011-12-11 19 views
5

en la programación de secuencias de comandos UNIX, gato es un comando que podría combinar 2 archivos juntos:unix: cómo gato de 2 entradas?

cat file1 file2 > file3 

esto generar el tercero mediante la combinación de los dos primeros.

también, gato podría utilizarse con tubería:

cat file1 | tail -4 

Esto mostrará una lista de los últimos 4 líneas de archivo 1.

pregunta: ¿cómo podría combinar los últimos 4 líneas de archivo de 1 y 2 , para generar el archivo 3?

Estoy un poco perdido aquí: ¿cómo dar 2 entradas de flujo a gato?

+1

¿Qué shell estás usando? – Staven

+0

gracias chicos, ¡todos sus scripts funcionan! : D – athos

Respuesta

5

Bash tiene una característica process substitution:

cat <(tail -4 file1) <(tail -4 file2) 

que a menudo utilizan esta característica para diff versiones ligeramente alterados de dos archivos.

8

que podría hacer lo siguiente (en bash):

(tail -4 file1; tail -4 file2) > file3 

que no se utiliza el gato como por su pregunta, pero sí lograr el objetivo que usted describe.

1

¿Qué pasa con:

cat file1 | tail -4 > ./file3; cat file2 | tail -4 >> ./file3 

?

+3

En ese caso, podría usar: 'cola -4 archivo1> ./archivo3; cola -4 ./file2 >>./file3' (solo usando tail y no cat/tail) – Renato

2

Puede usar pee desde moreutils para hacerlo. Aquí está mi solución

pee 'tail file1' 'tail file2' </dev/null > file3 
+0

Éste trabaja con comandos que nunca terminan, como "tail -f" – golimar

Cuestiones relacionadas