Linux: gato con separadores entre archivos


28

En Linux si escribe cat *, obtendrá algo como esto:

línea 1 de fichero1
línea 2 de fichero1
línea 1 de fichero2
línea 1 de archivo3
línea 2 de archivo3
línea 3 de archivo3

Lo que me gustaría es mostrar un separador entre los archivos. Algo como esto:
línea 1 de fichero1
línea 2 de fichero1
XXXXXXXXXXXX
línea 1 de fichero2
XXXXXXXXXXXX
línea 1 de archivo3
línea 2 de archivo3
línea 3 de archivo3

¿Es eso fácilmente posible con una línea fácil de escribir de memoria?

Respuestas:


40

Si no eres demasiado quisquilloso con la apariencia del separador:

tail -n +1 *

¡Esto es genial! Me sorprende cómo su comando es diferente de tail -n 1 *. Tampoco puedo encontrar ninguna mención del efecto de +1 (rathen que 1) en la página del manual.
Daniele

1
tail -n Xmuestra las últimas X líneas. tail -n +Xcomienza en la línea X que comienza en 1 , es decir, muestra todas las líneas excepto la primera (X-1).
Gilles 'SO- deja de ser malvado'

Ah, ahora puedo ver eso en la página del manual. Lo pasé por alto. Genial, muchas gracias
Daniele

Soluciones similares se encuentran en este artículo: everythingsysadmin.com/2012/09/unorthodoxunix.html
TomOnTime

Perdón por el mal comentario, pero es increíble Gracias, @Gilles
Mike D


11
awk 'FNR==1 && NR!=1 {print "XXXXXXXXXXXX"}{print}' *

O

awk 'FNR==1 {print "XXXXXX", FILENAME, "XXXXXX"}{print}' *

O

awk 'FNR==1 {print "XXXXXX File no. " ++count, "XXXXXX"}{print}' *

Usando solo Bash (no cat):

for file in *; do printf "$(<"$file")\nXXXXXXXXXXXX\n"; done

Editar:

En AWK 4:

awk 'BEGINFILE {print "XXXXXXXXXXXX"}{print}' *

Puede usar cualquier separador como los de los otros ejemplos en esta respuesta. Si desea el separador al final de cada archivo, cambie BEGINFILEa ENDFILE. Todavía puede aparecer al comienzo del script ya que es condicional (en lugar de implicar un orden de ejecución).


2
+1 para awk! Juro que puede hacer cualquier cosa ...
Brad
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.