[Shell] Ajout d'un bloc texte dans une fichier via script shell
Résolu/Fermé
Doudou95
Messages postés
1561
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
30 avril 2019
-
29 avril 2019 à 16:34
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 30 avril 2019 à 10:14
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 30 avril 2019 à 10:14
A voir également:
- [Shell] Ajout d'un bloc texte dans une fichier via script shell
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Ouvrir un fichier .bin - Guide
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
29 avril 2019 à 19:20
29 avril 2019 à 19:20
Salut,
Avec sed ça risque d'être coton, surtout que l'option d'insertion (ou d'ajout) n'aime pas trop les sauts de lignes.
Le passage via une variable n'est pas fait non plus pour faciliter les choses ;-\
Une solution quand même avec "ed" et un fichier à la place de la variable…
Le fichier contenant la partie à insérer :
Le fichier devant recevoir le bloc :
La syntaxe de "ed" :
Si ça te donne satisfaction et que tu veux reproduire l'équivalent de l'option "-i" de "sed", change la fin de la syntaxe comme suit :
Avec sed ça risque d'être coton, surtout que l'option d'insertion (ou d'ajout) n'aime pas trop les sauts de lignes.
Le passage via une variable n'est pas fait non plus pour faciliter les choses ;-\
Une solution quand même avec "ed" et un fichier à la place de la variable…
Le fichier contenant la partie à insérer :
$ cat fich
REF_FLUX)\ #DESCRIPTION DU FLUX
ENTITE="XX"
RETENTION=XX
PARTNER="XX"
FLOWLABEL="XX XX XX"
TOPMAIL=X
DESTINATAIRES="XX@XX.XXX"
OBJET_MAIL="XX XXX XX"
CORPS_MAIL="XX XXX XX"
PIECE_JOINTE_MAIL="XX";;
Le fichier devant recevoir le bloc :
$ cat foo.sh
#! /bin/bash
case $1 in
1) echo 1
;;
2) echo 2
;;
*) echo FIN
;;
esac
La syntaxe de "ed" :
$ ed -s foo.sh <<<$'H\n/\*)/-1 r fich\n,p'
#! /bin/bash
case $1 in
1) echo 1
;;
2) echo 2
;;
REF_FLUX)\ #DESCRIPTION DU FLUX
ENTITE="XX"
RETENTION=XX
PARTNER="XX"
FLOWLABEL="XX XX XX"
TOPMAIL=X
DESTINATAIRES="XX@XX.XXX"
OBJET_MAIL="XX XXX XX"
CORPS_MAIL="XX XXX XX"
PIECE_JOINTE_MAIL="XX";;
*) echo FIN
;;
esac
Si ça te donne satisfaction et que tu veux reproduire l'équivalent de l'option "-i" de "sed", change la fin de la syntaxe comme suit :
ed -s foo.sh <<<$'H\n/\*)/-1 r fich\nw'
Doudou95
Messages postés
1561
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
30 avril 2019
275
29 avril 2019 à 19:26
29 avril 2019 à 19:26
J'ai un peu honte de le dire mais je ne connais pas la commande ed bien que je l'ai croisé sur un forum tout à l'heure.
Dans mes tentatives initiales les sauts de lignes ne m'embêtaient pas trop, c'est vraiment ces satanés espaces qui se transformaient en saut de ligne.
Ce que tu m'a communiqué semble parfaitement correspondre au besoin.
Je te tiens au courant du résultat, je vais essayer de faire une VM car j'ai pas le pc du taff.
Je te tiens au courant, merci bien !
Dans mes tentatives initiales les sauts de lignes ne m'embêtaient pas trop, c'est vraiment ces satanés espaces qui se transformaient en saut de ligne.
Ce que tu m'a communiqué semble parfaitement correspondre au besoin.
Je te tiens au courant du résultat, je vais essayer de faire une VM car j'ai pas le pc du taff.
Je te tiens au courant, merci bien !
Doudou95
Messages postés
1561
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
30 avril 2019
275
29 avril 2019 à 20:53
29 avril 2019 à 20:53
Le résultat est impeccable, je ferai des tests en live demain sur mon fichier de test.
As tu un lien dans tes favoris expliquant le niveau avancé de l'utilisation de cette commande afin de comprendre complètement la commande décortiquée?
J'ai vu un équivalent dans la journée sur lequel tu étais déjà intervenu avec sed.
En tous cas merci bien je vais enfin avancer. Au top !
As tu un lien dans tes favoris expliquant le niveau avancé de l'utilisation de cette commande afin de comprendre complètement la commande décortiquée?
J'ai vu un équivalent dans la journée sur lequel tu étais déjà intervenu avec sed.
En tous cas merci bien je vais enfin avancer. Au top !
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
30 avril 2019 à 08:21
30 avril 2019 à 08:21
La seule référence que j'ai concernant "ed" c'est Editing files via scripts with ed
29 avril 2019 à 23:38
mais je ne l'aurais pas sorti tout seul : https://stackoverflow.com/questions/11243102/using-sed-to-insert-file-content/11246712#11246712
30 avril 2019 à 08:20
J'avais testé cette solution hier, sans succès, à la différence près, que je n'avais pas mis le "N" final, qui apparemment fait toute la différence ;-\
Merci.
30 avril 2019 à 10:09
Merci bien.
La commande ne fait qu'afficher le contenu du fichier avec le bloc.
J'ai du ajouter -i pour vraiment ajouter le bloc :
30 avril 2019 à 10:14