8 votes

Concaténer deux fichiers et les séparer avec un saut de ligne

J'ai deux fichiers :

k.txt :

3 5 7 9 19 20 

h.txt :

000010
100001
111001

si j'utilise simplement la commande cat, il n'y a pas de saut de ligne. J'ai besoin d'une commande qui fournirait un fichier qui ressemble à ceci :

3 5 7 9 19 20 
000010
100001
111001

20voto

Stewart Points 1385

Si, comme le suggère steeldriver, vos fichiers ne se terminent pas par un retour à la ligne, vous pouvez essayer :

awk '{print}' k.txt h.txt > newfile

ou, si vous aimez le golf

awk 1 k.txt h.txt > newfile

ou

perl -lne 'print' k.txt h.txt 

ou

( cat k.txt ; echo ""; cat h.txt; echo ) > newfile

ou

echo "$(cat k.txt)"; echo "$(cat h.txt)"

9voto

Cyrus Points 4962

Essayez ceci avec bash :

cat k.txt <(echo) h.txt > new.txt

5voto

A.B. Points 84870

Utilisation de sed:

sed '/^/ r h.txt' k.txt

ou mieux (merci @steeldriver)

sed '$a\' k.txt h.txt

Utilisation de ed:

(echo "0a"; cat k.txt; echo "."; echo "wq") | ed -s h.txt

et pour le saut de ligne manquant dans k.txt:

(echo "0a"; cat k.txt; echo ""; echo "."; echo "wq") | ed -s h.txt

ou si vous avez besoin d'un fichier de sortie séparé:

(echo "0a"; cat k.txt; echo ""; echo "."; echo "w out.txt"; echo "q") | ed -s h.txt

3voto

Sergiy Kolodyazhnyy Points 97292

Se rendant compte que le fichier1 pourrait ne pas contenir de saut de ligne, pourquoi ne pas simplement ajouter le saut de ligne vous-même ? (cat file1.txt; printf "\n"; cat file2.txt ) > out.txt. La manière alternative de le faire serait printf "\n" | cat file1.txt - file2.txt

3voto

cuonglm Points 2255

C'est le travail pour paste:

paste -sd'\n' file1 file2
  • -s faire en sorte que paste concatène toutes les lignes de chaque fichier dans l'ordre de la ligne de commande.
  • -d'\n' faire en sorte que paste utilise un saut de ligne comme délimiteur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X