Insérer caractère [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 16 septembre 2020
Statut
Membre
Dernière intervention
16 septembre 2020
-
Messages postés
35590
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 septembre 2020
-
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

2 réponses

Messages postés
35590
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 septembre 2020
5 451
Salut,

On peut avoir un bout de fichier en guise d'exemple ?

Messages postés
35590
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 septembre 2020
5 451
En attendant pour répondre à ta question :

$ echo "${A}"
aaaaaaaaaaaaAaaaaaaaaaaaa

$ sed 's/.\{12\}/&;/' <<<${A}
aaaaaaaaaaaa;Aaaaaaaaaaaaa

$ sed 's/.\{13\}/&;/' <<<${A}
aaaaaaaaaaaaA;aaaaaaaaaaaa


Sinon, tu n'as pas besoin de
cat
et de
tail
,
sed
peut tout faire…

Messages postés
35590
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 septembre 2020
5 451 >
Messages postés
5
Date d'inscription
mercredi 16 septembre 2020
Statut
Membre
Dernière intervention
16 septembre 2020

Mea culpa ;-(

Je n'avais pas fait attention qu'il fallait sauter les 2 premières lignes.

Donc :
sed '2,$ s/;/~/g;s/.\{42\}/&;/'  fichier


2,$
on n'applique les instructions qu'après la seconde ligne (2) et ce jusqu'à la fin du fichier ($).
Messages postés
5
Date d'inscription
mercredi 16 septembre 2020
Statut
Membre
Dernière intervention
16 septembre 2020
>
Messages postés
35590
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 septembre 2020

Non, non, non, c'est mon ignorance et moi-même qui faisont notre mea culpa :-)

En fait je ne veux pas que la première ligne se trouve dans le fichier de sortie !

J'ai trouvé sed '1d;s/;/~/g;s/.\{42\}/&;/' f2 qui supprime la première ligne du fichier

Peut-être qu'il y a mieux ?
Messages postés
35590
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 septembre 2020
5 451 >
Messages postés
5
Date d'inscription
mercredi 16 septembre 2020
Statut
Membre
Dernière intervention
16 septembre 2020

C'est parfait ;-)
Messages postés
5
Date d'inscription
mercredi 16 septembre 2020
Statut
Membre
Dernière intervention
16 septembre 2020
>
Messages postés
35590
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 septembre 2020

Merci pour tout
Au plaisir ;-)
Messages postés
35590
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 septembre 2020
5 451 >
Messages postés
5
Date d'inscription
mercredi 16 septembre 2020
Statut
Membre
Dernière intervention
16 septembre 2020

De rien.