Linux: gatto con separatori tra i file


28

In Linux se digiti cat *, otterrai qualcosa del genere:

linea1 da file1
linea2 da file1
linea1 da file2
linea1 da file3
linea2 da file3
linea3 da file3

Quello che vorrei è visualizzare un separatore tra i file. Qualcosa del genere:
linea1 da file1
linea2 da file1
XXXXXXXXXXXX
linea1 da file2
XXXXXXXXXXXX
linea1 da file3
linea2 da file3
linea3 da file3

È facilmente possibile con un solo strato facile da scrivere a memoria?

Risposte:


40

Se non sei troppo esigente sull'aspetto del separatore:

tail -n +1 *

Questo è fantastico! Sono sorpreso di come il tuo comando sia diverso da tail -n 1 *. Non riesco nemmeno a trovare alcun riferimento all'effetto di +1 (rathen di 1) nella pagina man.
Daniele,

1
tail -n Xmostra le ultime X linee. tail -n +Xinizia dalla riga X a partire da 1 , ovvero mostra tutte tranne la prima (X-1).
Gilles 'SO- smetti di essere malvagio' il

Ah, ora posso vederlo nella pagina man. L'ho trascurato. Ottimo, grazie mille
Daniele,

Soluzioni simili sono in questo articolo: everythingsysadmin.com/2012/09/unorthodoxunix.html
TomOnTime

Ci scusiamo per il brutto commento, ma è fantastico. Grazie, @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}' *

Utilizzando solo Bash (no cat):

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

Modificare:

In AWK 4:

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

Puoi usare qualsiasi separatore come quelli negli altri esempi in questa risposta. Se si desidera il separatore alla fine di ogni file, passare BEGINFILEa ENDFILE. Può ancora apparire all'inizio dello script poiché è un condizionale (piuttosto che implica un ordine di esecuzione).


2
+1 per awk! Giuro che può fare qualsiasi cosa ...
Brad
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.