Linux: kot z separatorami między plikami

28

W Linuksie, jeśli wpiszesz cat *, otrzymasz coś takiego:

line1 z plik1
line2 z plik1
line1 z plik2
line1 od plik3
line2 z plik3
Line3 od file3

Chciałbym wyświetlić separator między plikami. Coś takiego:
line1 z plik1
line2 z plik1
XXXXXXXXXXXX
line1 z plik2
XXXXXXXXXXXX
line1 z plik3
line2 z plik3
Line3 od file3

Czy jest to łatwo możliwe przy użyciu jednowarstwowego pisania na pamięć?

Daniele
źródło

Odpowiedzi:

40

Jeśli nie jesteś zbyt wybredny co do wyglądu separatora:

tail -n +1 *
Gilles „SO- przestań być zły”
źródło
To jest świetne! Jestem zaskoczony, jak różni się twoje polecenie od ogona -n 1 *. Nie mogę znaleźć żadnej wzmianki o działaniu +1 (rathen niż 1) na stronie man.
Daniele,
1
tail -n Xpokazuje ostatnie X linii. tail -n +Xzaczyna się od linii X, zaczynając od 1 , tzn. pokazuje wszystkie linie oprócz pierwszej (X-1).
Gilles „SO- przestań być zły”
Ach, teraz widzę to na stronie podręcznika. Przeoczyłem to. Świetnie, wielkie dzięki
Daniele,
Podobne rozwiązania znajdują się w tym artykule: everythingsysadmin.com/2012/09/unorthodoxunix.html
TomOnTime
Przepraszam za zły komentarz, ale to jest niesamowite. Dziękuję, @Gilles
Mike D
17

cd /to/your/directory; for each in *; do cat $each; echo "XXXXXXXXXXX"; done

Janne Pikkarainen
źródło
pobili mnie do tego :-)
Sirex
Mimo to rozwiązanie dostarczone przez Gilles jest imponująco krótkie!
Janne Pikkarainen,
Łał. działa cud. Pomógł mi połączyć folder JSON
Mayank Chandak
11
awk 'FNR==1 && NR!=1 {print "XXXXXXXXXXXX"}{print}' *

Lub

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

Lub

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

Używając tylko Bash (nie cat):

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

Edytować:

W AWK 4:

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

Możesz użyć dowolnego separatora, takiego jak te z innych przykładów w tej odpowiedzi. Jeśli chcesz separator na końcu każdego pliku, zmień BEGINFILEna ENDFILE. Może nadal pojawiać się na początku skryptu, ponieważ jest warunkowy (zamiast sugerować kolejność wykonywania).

Wstrzymano do odwołania.
źródło
2
+1 za awk! Przysięgam, że może zrobić wszystko ...
Brad