Linux: chat avec séparateurs parmi les fichiers


28

Sous Linux, si vous tapez cat *, vous obtiendrez quelque chose comme ceci:

ligne1 du fichier1
ligne2 du fichier1
ligne1 du fichier2
ligne1
du fichier3
ligne2 du fichier3 ligne3 du fichier3

Ce que je voudrais, c'est afficher un séparateur entre les fichiers. Quelque chose comme ceci:
ligne1 du fichier1
ligne2 du fichier1
XXXXXXXXXXXX
ligne1 du fichier2
XXXXXXXXXXXX
ligne1
du fichier3
ligne2 du fichier3 ligne3 du fichier3

Est-ce facilement possible avec un monoligne facile à taper par cœur?

Réponses:


40

Si vous n'êtes pas trop pointilleux sur l'apparence du séparateur:

tail -n +1 *

C'est bien! Je suis surpris de voir à quel point votre commande est différente de tail -n 1 *. Je ne trouve non plus aucune mention de l'effet de +1 (plutôt que 1) dans la page de manuel.
Daniele

1
tail -n Xaffiche les dernières lignes X. tail -n +Xcommence à la ligne X commençant à 1 , c'est-à-dire qu'il affiche toutes les lignes sauf les premières (X-1).
Gilles 'SO- arrête d'être méchant'

Ah, maintenant je peux le voir dans la page de manuel. Je l'ai oublié. Super, merci beaucoup
Daniele

Des solutions similaires figurent dans cet article: everythingsysadmin.com/2012/09/unorthodoxunix.html
TomOnTime

Désolé pour le mauvais commentaire, mais c'est génial. Merci, @Gilles
Mike D


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

Ou

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

Ou

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

En utilisant uniquement Bash (non cat):

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

Modifier:

Dans AWK 4:

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

Vous pouvez utiliser n'importe quel séparateur tel que ceux des autres exemples de cette réponse. Si vous souhaitez que le séparateur se trouve à la fin de chaque fichier, passez BEGINFILEà ENDFILE. Il peut toujours apparaître au début du script car il s'agit d'un conditionnel (plutôt que d'un ordre d'exécution implicite).


2
+1 pour awk! Je jure qu'il peut tout faire ...
brad
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.