J'ai besoin de copier le contenu d'un fichier texte et de le coller dans un autre fichier texte. Le premier fichier texte contient 10 lignes de données et j'ai besoin qu'elles soient copiées dans le deuxième fichier texte à partir de la ligne numéro 5 (par exemple). Donc, dans le deuxième fichier texte, ces données doivent être écrites de la ligne 5 à la ligne 14. Comment cela peut-il être fait? Merci d'avance. Considérez-moi comme une recrue concernant Linux.
text-processing
G. Paschalis
la source
la source
(head -n 5 a.txt ; cat b.txt ; tail -n +6 a.txt) > c.txt
L'outil le plus simple ici pourrait être
sed
. Pour insérerb.txt
dansa.txt
après la 5ème ligne, vous pouvez écrire:sed
lit le fichier spécifié comme argument (a.txt
) ligne par ligne. Toutes les lignes sont reproduites dans la sortie telles qu'elles sont apparues dans l'entrée, à moins qu'elles ne soient modifiées par une commande.Il
5
s'agit d'une adresse (numéro de ligne) à laquelle la commande suivante doit être exécutée. La commande que nous utilisons estr
, qui prend un nom de fichier comme argument (icib.txt
), le lit complètement et l'insère dans la sortie après la ligne courante.En l'état, cette
sed
ligne de commande n'imprimera la sortie que sur le terminal, sans écrire dans aucun fichier. Vous pouvez soit le rediriger vers un nouveau fichier (pas l'un des fichiers d'entrée!) En utilisant la redirection de sortie de Bash:Ou vous pouvez directement modifier le fichier d'entrée externe
a.txt
en utilisantsed
le-i
commutateur de (pour "sur place"). Si vous l'écrivez en tant que-i.bak
, il fera d'abord une copie de sauvegarde du fichier d'entrée d'origine avec le suffixe.bak
:Un exemple:
la source
(Réutilisation d'un exemple élégant de @ByteCommander :)
la source