Combinez plusieurs fichiers texte en un seul fichier

10

J'utilise la prcommande unix pour combiner plusieurs fichiers texte en un seul fichier texte:

pr -F *files > newfile

Chaque fichier a une longueur différente, un nombre de lignes différent. Je suis surtout satisfait du résultat, j'aime qu'il comprenne le nom du fichier texte d'origine suivi du contenu de ce fichier. Cependant, je voudrais éliminer les lignes vides entre le nom du fichier texte d'origine et son contenu. Je veux seulement que des lignes vides entre les différents fichiers texte séparent chacun. En outre, il imprime le caractère ^Laprès le contenu de chaque fichier texte, et je voudrais éliminer ce caractère.

Chaque fichier lu reçoit également un numéro de «page». Un seul fichier est plus long que la ligne par défaut de 66 lignes. ce fichier finit par être craché en 2 «pages» et est divisé en 2 sections divisées par des lignes vides. Est-il possible d'écrire ce texte en continu sans qu'il soit divisé?

Merci pour toute aide!

Janet
la source

Réponses:

9

Vous pouvez utiliser l'utilitaire AWK:

awk 'FNR==1{print ""}{print}' *files > newfile

Source: /programming/1653063/how-do-i-include-a-blank-line-between-files-im-concatenating-with-cat

Radu Rădeanu
la source
merci pour votre suggestion. cependant, -T n'est pas reconnu. je travaille sur mac os x si cela compte.
janet
malheureusement, -t crée le même type de fichier que cat, sans interruption entre les fichiers texte lus.
janet
merci Radu. qui me donne à peu près ce que je veux! désolé, je me rends compte maintenant que je poste au mauvais endroit, car je vois la notification d'être hors sujet. je vous remercie pour votre aide!
janet
12

Pour avoir des lignes vides entre les fichiers:

cat file1 newline file2 newline file3 > newfile

Où 'newline' est un fichier avec une ligne vide.

Darius Žitkevičius
la source
Pouvez-vous préciser comment créer le fichier newline? Certains éditeurs de texte ajouteront automatiquement un caractère de fin de ligne à la dernière ligne, d'autres non, de sorte que certaines personnes peuvent rencontrer des problèmes pour créer ce fichier correctement. En d'autres termes: un fichier de longueur nulle a-t-il zéro ligne ou une ligne?
Eliah Kagan
vim newline dans vim: wq C'est tout.
Darius Žitkevičius
Tant que je vois, "cat" met automatiquement une nouvelle ligne entre chaque fichier.
myuce
1
for file in *.txt; do (cat "${file}"; echo) >> concatenated.txt; done

Ce qui précède ajoutera le contenu du fichier txt eacb dans concatenated.txt en ajoutant une nouvelle ligne entre eux.

Francisco Luz
la source
0

Vous pouvez utiliser catpour vider le texte des fichiers dans un seul fichier avec:

cat file1 file2 file3 > newfile
Atari911
la source
2
Malheureusement, catne remplit aucune des autres exigences.
Ignacio Vazquez-Abrams
1
Oui merci. mais cat répertorie simplement le contenu de chaque fichier sans le nom du fichier texte d'origine et il répertorie également le contenu de chaque fichier l'un après l'autre sans interruption. j'ai besoin d'au moins 1 ligne vide entre le contenu de chaque fichier texte dans le nouveau gros fichier.
janet