#1 Le 15/04/2023, à 13:57
- Akatu
[RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Bonjour,
Je souhaiterais donc copier l'entièreté du fichier 2.txt à la 3e ligne du fichier 1.txt.
~/Tmp ❯ cat 1.txt
a
z
e
r
t
y
~/Tmp ❯ cat 2.txt
chat
chien
~/Tmp ❯
Résultat souhaité :
a
z
chat
chien
e
r
t
y
Je vois comment ajouter du texte en dur via la commande sed, exemple :
sed -i '3 i texte souhaité' 1.txt
Mais je veux mettre en variable le contenu du fichier 2.txt car ce dernier n'est jamais le même.
Vous voyez la tisane ?
Merci.
Dernière modification par Akatu (Le 15/04/2023, à 15:56)
KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)
Hors ligne
#2 Le 15/04/2023, à 14:24
- Vobul
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Bonjour Akatu,
Voici une solution possible en utilisant la commande sed pour insérer le contenu de 2.txt à la 3ème ligne de 1.txt :
sed -i '3 r 2.txt' 1.txt
Explications :
3 : spécifie la ligne à laquelle le texte doit être inséré.
r : indique à sed de lire le contenu d'un fichier et de l'insérer à l'endroit spécifié.
2.txt : le nom du fichier contenant le texte à insérer.
-i : option pour modifier le fichier d'entrée (1.txt) directement.
Cette commande va insérer le contenu de 2.txt à la 3ème ligne de 1.txt et enregistrer les modifications directement dans 1.txt.
J'espère que cela vous aidera !
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#3 Le 15/04/2023, à 14:27
- sputnick
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Edit: grillé par Vobul
Comme ça:
$ sed '2r 2.txt' 1.txt
a
z
chat
chien
e
r
t
y
r comme read
Dernière modification par sputnick (Le 15/04/2023, à 14:36)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#4 Le 15/04/2023, à 14:32
- Vobul
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Edit: grillé par Vobul
Par ChatGPT en réalité
Dernière modification par Vobul (Le 15/04/2023, à 14:37)
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#5 Le 15/04/2023, à 14:37
- sputnick
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Haaan, c'est mal de tricher
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#6 Le 15/04/2023, à 14:38
- Vobul
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Haaan, c'est mal de tricher
Je t'invite à participer à cette discussion : https://forum.ubuntu-fr.org/viewtopic.p … #p22668815
Perso je pense qu'une réponse automatique d'un gpt peut régler pas mal de cas d'une manière pas trop dégueulasse. En tout cas pour ce type de question ça tape dans le mille.
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#7 Le 15/04/2023, à 15:55
- Akatu
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Je n'ai pas eu le réflexe
Merci pour votre aide et bon week-end.
KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)
Hors ligne
#8 Le 26/05/2023, à 15:48
- Postmortem
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Perso je pense qu'une réponse automatique d'un gpt peut régler pas mal de cas d'une manière pas trop dégueulasse. En tout cas pour ce type de question ça tape dans le mille.
Sauf que dans le cas présent, chatGPT n'a pas donné la bonne réponse, contrairement à sputnick !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#9 Le 26/05/2023, à 16:11
- Watael
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
non plus !
je veux mettre en variable le contenu du fichier 2.txt
en bash :
content=$(<fichierAuHasard.txt) #ceci est équivalent à `cat fichierAuHasard.txt'
sed '3i'"$content" fic1.txt # je ne mets pas le `-i' pour que tu valides la commande avant de l'exécuter en vrai.
à peu de chose près : je n'ai pas testé.
pour r (read) c'est pareil : il faut fermer les apostrophes autour des commandes sed, mettre des guillemets aux variables shell, et ainsi de suite s'il y a lieu.
Dernière modification par Watael (Le 26/05/2023, à 16:13)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#10 Le 26/05/2023, à 16:22
- Akatu
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Bah si, la réponse de ChatGPT fonctionne très bien.
sed -i '2r source.txt' final.txt
Faut juste faire un -1 sur le chiffre. Si on veut insérer à la 3e ligne, faut mettre 2r par exemple.
@Watael
Voilà ce que ça donne chez moi :
~/Tmp ❯ cat source.txt
ceci est le texte à insérer
et pas autre chose
~/Tmp ❯ cat final.txt
1
2
3
4%
~/Tmp ❯ cat script.sh
#!/bin/bash
content=$(<source.txt)
sed -i '2i'"$content" final.txt%
~/Tmp ❯ ./script.sh
sh: 1: t: not found
sh: 1: t: not found
sh: 1: t: not found
sh: 1: t: not found
~/Tmp ❯ cat final.txt
1
ceci est le texte à insérer
2
3
4%
~/Tmp ❯
Dernière modification par Akatu (Le 26/05/2023, à 16:22)
KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)
Hors ligne
#11 Le 26/05/2023, à 16:27
- Postmortem
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Bah si, la réponse de ChatGPT fonctionne très bien.
Oui, je voulais juste faire une petite boutade sur le fait qu'il fallait mettre 2 à la place de 3 et que donc les IA sont donc plus bêtes que nous !!!
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#12 Le 26/05/2023, à 16:28
- Akatu
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Je n'ai aucun doute là-dessus
KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)
Hors ligne
#13 Le 26/05/2023, à 16:37
- Postmortem
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
en bash :
content=$(<fichierAuHasard.txt) #ceci est équivalent à `cat fichierAuHasard.txt' sed '3i'"$content" fic1.txt # je ne mets pas le `-i' pour que tu valides la commande avant de l'exécuter en vrai.
Dans sed, utiliser « i"$var" », où $var est le contenu de tout un fichier, c'est un sacré bordel ; dans le fichier, il peut y avoir des caractères interprétés par sed.
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#14 Le 26/05/2023, à 16:51
- sputnick
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Dans sed, utiliser « i"$var" », où $var est le contenu de tout un fichier, c'est un sacré bordel ; dans le fichier, il peut y avoir des caractères interprétés par sed.
Wé, ça parrait 'un peu' brico.
Le truc, c'est que moi je teste avant de publier ici ou sur stackoverflow ou n'importe où. ChatGTP, il te balance des trucs des fois qui ne sont pas hyper pertinents et non vérifiés. Par contre, très utile pour se servir de modules particuliers et denses (comme Selenium) en Python (ou autre) pour savoir faire quelque chose de précis.
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#15 Le 26/05/2023, à 17:09
- Watael
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
des fois, j'ai la flemme de tester. l'OP peut partir de ce que je donne, en sachant que je n'ai pas testé, et expérimenter. il a une base concrète pour débuter des tests.
et puis je suis là, je ne lâcherai avant que ça fonctionne.
sed -i '2i'"$content" final.txt%
je n'ai pas écrit ce %. d'où vient-il ? interprétation du texte par sed, comme cela a été évoqué.
je n'ai d'ailleurs pas dit que c'était la meilleure solution, je réponds précisément à la question. et si ça ne fonctionne pas/pas de manière optimale, on trouvera une autre façon de faire !
des fois, aller dans le sens de l'OP, c'est aussi lui montrer pourquoi c'est pas top.
j'suis péremptoire, ça va pas.
j'suis conciliant, ça va pas.
vraiment, vous ne savez pas ce que vous voulez.
Dernière modification par Watael (Le 26/05/2023, à 17:13)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#16 Le 26/05/2023, à 17:12
- sputnick
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
Je n'ai pas eu le réflexe
Merci pour votre aide et bon week-end.
Pour moi cela veut dire 'c'est bon merci' non?
En gros, déjà résolu. (voir le [RÉSOLU] dans le titre).
Dernière modification par sputnick (Le 26/05/2023, à 17:13)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#17 Le 26/05/2023, à 17:20
- Postmortem
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
j'suis péremptoire, ça va pas.
j'suis conciliant, ça va pas.
Ben non, ça va pas !! :lol::lol:
vraiment, vous ne savez pas ce que vous voulez.
Si si, t’embêter !!
Puis bon, avec tous les "eval" que tu m'as fait supprimer de mes scripts (bon, j'en ai gardé, faut pas déconner !), tu mérites bien que je t'embête !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#18 Le 26/05/2023, à 19:03
- Akatu
Re : [RÉSOLU] Ajouter le contenu d'un fichier à une ligne spécifique
je n'ai pas écrit ce %. d'où vient-il ?
Ça vient de zsh. Promis c'est pas moi
Et oui le problème est résolu et en prod depuis un moment.
Dernière modification par Akatu (Le 26/05/2023, à 19:03)
KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)
Hors ligne