web-dev-qa-db-fra.com

Concaténez deux fichiers et séparez-les avec une nouvelle ligne

J'ai deux fichiers:

k.txt:

3 5 7 9 19 20 

h.txt:

000010
100001
111001

si je viens d'utiliser un chat, il n'y a pas de nouvelle ligne. J'ai besoin d'une commande qui fournirait un fichier qui ressemble à ceci:

3 5 7 9 19 20 
000010
100001
111001
5
user3069326

Si, comme le suggère steeldriver, vos fichiers ne se terminent pas par une nouvelle ligne, vous pouvez essayer:

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

ou si vous aimez jouer au 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)"
15
terdon

Essayez ceci avec bash:

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

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 la nouvelle ligne manquante 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
5
A.B.

Réalisant que le fichier1 pourrait ne pas contenir la nouvelle ligne, pourquoi ne pas simplement ajouter la nouvelle ligne vous-même? (cat file1.txt; printf "\n"; cat file2.txt ) > out.txt. Une autre façon de faire cela serait printf "\n" | cat file1.txt - file2.txt

3

C'est le travail de coller :

paste -sd'\n' file1 file2
  • -s make paste concaténer toutes les lignes de chaque fichier dans l’ordre de la ligne de commande.
  • -d'\n' make paste a utilisé la nouvelle ligne comme délimiteur.
3
cuonglm

Personne n'a encore mentionné python. C'est ici:

#!/usr/bin/env python2
with open('k.txt') as fk, open('h.txt') as fh, open('out.txt', 'a') as fo:
    for line in fk:
        fo.write(line)
    fo.write('\n')
    for line in fh:
        fo.write(line)

Après avoir lu le fichier f.txt, nous avons inséré manuellement une nouvelle ligne dans le fichier out.txt (fo.write('\n')), puis ajouté à nouveau le contenu du fichier k.txt au fichier out.txt. Enfin, out.txt contiendra la sortie désirée.

1
heemayl