Insérer caractère
Résolu
greg11081975
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
J'utilise la commande shell suivante :
cat $f|tail -n +2|sed "s, ; ,~,g" >> GHI_19667_S_DPD_STATUS_FILE.data
cette commande lit le fichier à partir de la deuxième ligne et remplace les ~ par des ; et envoie la ligne vers le fichier de sortie ! (mais ça vous l'aviez compris)
je voudrais avant l'instruction sed insérer le caractère ; à la 42ème position de la ligne.
Pouvez-vous m'aider :--)
Merci beaucoup
Greg
J'utilise la commande shell suivante :
cat $f|tail -n +2|sed "s, ; ,~,g" >> GHI_19667_S_DPD_STATUS_FILE.data
cette commande lit le fichier à partir de la deuxième ligne et remplace les ~ par des ; et envoie la ligne vers le fichier de sortie ! (mais ça vous l'aviez compris)
je voudrais avant l'instruction sed insérer le caractère ; à la 42ème position de la ligne.
Pouvez-vous m'aider :--)
Merci beaucoup
Greg
A voir également:
- Insérer caractère
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Insérer video powerpoint - Guide
- Caractere speciaux - Guide
- Insérer signature word - Guide
2 réponses
En attendant pour répondre à ta question :
Sinon, tu n'as pas besoin de
$ echo "${A}"
aaaaaaaaaaaaAaaaaaaaaaaaa
$ sed 's/.\{12\}/&;/' <<<${A}
aaaaaaaaaaaa;Aaaaaaaaaaaaa
$ sed 's/.\{13\}/&;/' <<<${A}
aaaaaaaaaaaaA;aaaaaaaaaaaa
Sinon, tu n'as pas besoin de
catet de
tail,
sedpeut tout faire…
Bonjour Zipe31 et merci de ta réponse,
le fichier ressemble à ceci
Peux-tu me dire à quoi sert le <<<${A} ?
Comment remplacerais-tu l'ensemble des commandes par sed ?
Merci de ton aide ;-)
le fichier ressemble à ceci
PARCELNO;SCAN_CODE;DEPOT_CODE;DEPOTNAME;EVENT_DATE_TIME;ROUTE;TOUR;PCODE;SERVICE;CONSIGNEE_COUNTRY_CODE;CONSIGNEE_ZIP;ADD_SERVICE_1;ADD_SERVICE_2;ADD_SERVICE_3;WEIGHT;CUSTOMER_REFERENCE;POD_IMAGE_REF;RECEIVER_NAME;INFO_TEXT;LOCATION; 05348800423004;18;0998;Depot 0998;20200901135128;0000;;01;101;000;;;;;;2586068;;;133:1;; 05348800423004;18;0998;Depot 0998;20200901135128;0000;;01;101;000;;;;;;5409239;;;133:1;;
Peux-tu me dire à quoi sert le <<<${A} ?
Comment remplacerais-tu l'ensemble des commandes par sed ?
Merci de ton aide ;-)
$ cat f2
PARCELNO;SCAN_CODE;DEPOT_CODE;DEPOTNAME;EVENT_DATE_TIME;ROUTE;TOUR;PCODE;SERVICE;CONSIGNEE_COUNTRY_CODE;CONSIGNEE_ZIP;ADD_SERVICE_1;ADD_SERVICE_2;ADD_SERVICE_3;WEIGHT;CUSTOMER_REFERENCE;POD_IMAGE_REF;RECEIVER_NAME;INFO_TEXT;LOCATION;
05348800423004;18;0998;Depot 0998;20200901135128;0000;;01;101;000;;;;;;2586068;;;133:1;;
05348800423004;18;0998;Depot 0998;20200901135128;0000;;01;101;000;;;;;;5409239;;;133:1;;
$ sed '1n;s/;/~/g;s/.\{42\}/&;/' f2
PARCELNO;SCAN_CODE;DEPOT_CODE;DEPOTNAME;EVENT_DATE_TIME;ROUTE;TOUR;PCODE;SERVICE;CONSIGNEE_COUNTRY_CODE;CONSIGNEE_ZIP;ADD_SERVICE_1;ADD_SERVICE_2;ADD_SERVICE_3;WEIGHT;CUSTOMER_REFERENCE;POD_IMAGE_REF;RECEIVER_NAME;INFO_TEXT;LOCATION;
05348800423004~18~0998~Depot 0998~20200901;135128~0000~~01~101~000~~~~~~2586068~~~133:1~~
05348800423004~18~0998~Depot 0998~20200901;135128~0000~~01~101~000~~~~~~5409239~~~133:1~~
Peux-tu me dire à quoi sert le <<<${A} ?De la même manière qu'on peut rediriger l'entrée d'un fichier ainsi
< fichier, cette syntaxe fait la même chose mais avec le contenu d'une variable. C'était un exemple pour aller au plus pressé.
ok, donc echo récupe le stdin clavier et le met dans la variable A ensuite sed fait le reste ?
Par contre je ne comprend pas ce que fait 1n --> $ sed '1n;s/;/~/g;s/.\{42\}/&;/' f2
J'ai essayé de le remplacer par 2n en pensant qu'il allait commencer à la deuxième ligne du fichier mais non...
Et surtout, encore merci pour tes lumières ;-)
Par contre je ne comprend pas ce que fait 1n --> $ sed '1n;s/;/~/g;s/.\{42\}/&;/' f2
J'ai essayé de le remplacer par 2n en pensant qu'il allait commencer à la deuxième ligne du fichier mais non...
Et surtout, encore merci pour tes lumières ;-)
ok, donc echo récupe le stdin clavier et le met dans la variable A ensuite sed fait le reste ?Euh… non ! Je t'ai dit que ça c'était un exemple (la variable a été créée avant) pour te montrer comment insérer un caractère à la position adéquate. Ça n'a rien à voir avec ton problème.
Par contre je ne comprend pas ce que fait 1nOn demande à sed de lire la 1ère ligne, puis de passer à la ligne suivante (instruction "next" (n)). Donc les instructions qui suivent, s'appliqueront à toutes les autres lignes (sauf la 1ère).