Linux: Katze mit Trennzeichen zwischen Dateien


28

Wenn Sie unter Linux cat * eingeben, erhalten Sie ungefähr Folgendes:

Zeile1 von Datei1
Zeile2 von Datei1 Zeile1
von Datei2
Zeile1 von Datei3
Zeile2 von Datei3
Zeile3 von Datei3

Ich möchte ein Trennzeichen zwischen Dateien anzeigen. Etwas wie folgt aus :
line1 von file1
line2 von file1
XXXXXXXXXXXX
line1 von file2
XXXXXXXXXXXX
line1 von file3
line2 von file3
line3 von file3

Ist das mit einem Einzeiler, der auswendig leicht zu tippen ist, problemlos möglich?

Antworten:


40

Wenn Ihnen das Aussehen des Trennzeichens nicht allzu pingelig ist:

tail -n +1 *

Das ist toll! Ich bin überrascht, wie sich Ihr Befehl von tail -n 1 * unterscheidet. Ich kann auch keine Erwähnung der Wirkung von +1 (Rathen als 1) in der Manpage finden.
Daniele

1
tail -n Xzeigt die letzten X Zeilen. tail -n +Xbeginnt bei Zeile X und beginnt bei 1 , dh es werden alle außer den ersten (X-1) Zeilen angezeigt.
Gilles 'SO- hör auf böse zu sein'

Ah, jetzt kann ich das auf der Manpage sehen. Ich habe es übersehen. Großartig, vielen Dank
Daniele

Ähnliche Lösungen finden Sie in diesem Artikel: everythingsysadmin.com/2012/09/unorthodoxunix.html
TomOnTime

Entschuldigung für den schlechten Kommentar, aber das ist großartig. Vielen Dank, @ Gilles
Mike D


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

Oder

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

Oder

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

Verwenden Sie nur Bash (nein cat):

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

Bearbeiten:

In AWK 4:

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

In dieser Antwort können Sie ein beliebiges Trennzeichen wie in den anderen Beispielen verwenden. Wenn Sie das Trennzeichen am Ende jeder Datei verwenden möchten, ändern Sie es BEGINFILEin ENDFILE. Es kann immer noch am Anfang des Skripts angezeigt werden, da es eine Bedingung ist (anstatt eine Ausführungsreihenfolge zu implizieren).


2
+1 für awk! Ich schwöre, es kann alles ...
Brad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.