Fusion de deux fichiers avec un chat sans nouvelle ligne

Je veux fusionner deux fichiers cat file1 file2 > file3 . Mais ça commence par une nouvelle ligne. Je ne veux pas ça. Je pourrais utiliser tr pour remplacer toutes les nouvelles lignes dans l’espace, mais je ne peux pas le faire, car il y a de nouvelles lignes dans les fichiers que je ne veux pas remplacer.

Vous pouvez utiliser head avec -1 comme paramètre -c flags et -q

 head -c -1 -q file1 file2 > file3 

head -c -1 affichera tout jusqu’au dernier octet du code (dans ce cas, le dernier octet – endline – ne sera pas inclus). Le -q est tel que les noms de fichiers ne sont pas transmis au file3 comme le fait par défaut la head fichiers multiples.


Ou, comme suggéré par cette réponse – bash cat contenu de plusieurs fichiers dans une seule chaîne sans nouvelles lignes , le diriger vers tr :

 tr -d "\n" 

en bash, vous pouvez faire:

 cat <(sed -n '1n;p' file1) <(sed -n '1n;p' file2) 

vous pouvez utiliser awk:

 awk '(FNR>1){print}' file1 file2 

mise à jour – comment ça marche:

Nous demandons à awk de traiter deux fichiers: file1 et file2 . Il imprimera l’enregistrement entier (ligne) si condition (FNR>1) si vrai. FNR est une variable définie comme :

FNR – Le numéro d’enregistrement saisi dans le fichier d’entrée actuel.

La condition (FNR>1) sera donc vraie à chaque fois, sauf pour la première ligne de chaque fichier. De cette façon, nous sautons la première ligne de chaque fichier.