Frage Linux: Katze mit Trennzeichen zwischen den Dateien


In Linux, wenn Sie cat * eingeben, erhalten Sie etwas wie folgt:

Zeile1 aus Datei1
line2 aus file1
Zeile1 aus Datei2
Zeile1 aus Datei3
line2 von file3
line3 aus file3

Was ich möchte, ist ein Trennzeichen zwischen den Dateien anzuzeigen. Etwas wie das:
Zeile1 aus Datei1
line2 aus file1
XXXXXXXXXXXX
Zeile1 aus Datei2
XXXXXXXXXXXX
Zeile1 aus Datei3
line2 von file3
line3 aus file3

Ist das mit einem One-Liner einfach möglich, auswendig zu tippen?


19
2017-08-19 10:56


Ursprung




Antworten:


Wenn Sie das Erscheinungsbild des Separators nicht zu pingelig finden:

tail -n +1 *

30
2017-08-19 11:12



Das ist toll! Ich bin überrascht, wie sich dein Befehl vom Schwanz unterscheidet - n 1 *. Ich kann keine Erwähnung der Wirkung von +1 (rathen als 1) in der Manpage finden. - Daniele
tail -n X zeigt die letzten X Zeilen an. tail -n +X beginnt bei Zeile X beginnend mit 1das heißt, es zeigt alle außer den ersten (X-1) Linien. - Gilles
Ah, jetzt kann ich das auf der Manpage sehen. Ich habe es übersehen. Toll, vielen Dank - Daniele
Ähnliche Lösungen sind in diesem Artikel: everythingsysadmin.com/2012/09/unorthodoxunix.html - TomOnTime
Sorry für den schlechten Kommentar, aber das ist großartig. Danke, Gilles - Mike D


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


13
2017-08-19 10:59



schlag mich dazu :-) - Sirex
Dennoch ist die Lösung von Gilles beeindruckend kurz! - Janne Pikkarainen


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}' *

Nur mit Bash (Nr cat):

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

Bearbeiten:

In AWK 4:

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

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


8
2017-08-19 14:08



+1 für awk! Ich schwöre es kann alles machen ... - brad