[UNIX] Substitution caractère dans un fichier
Fermé
looping605
Messages postés
9
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
12 septembre 2006
-
12 sept. 2006 à 11:22
Maryline - 28 avril 2008 à 17:50
Maryline - 28 avril 2008 à 17:50
A voir également:
- [UNIX] Substitution caractère dans un fichier
- Caractère ascii - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir un fichier .bin - Guide
8 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 sept. 2006 à 16:07
12 sept. 2006 à 16:07
Re-
[jp@MDK tmpfs] $ cat toto.txt 123123123 456456456 789789789 123123123 456456456 789789789 [jp@MDK tmpfs] $ sed -i.bak '3s/\(.\{3\}\)\(.\{1\}\)\(.*\)/\1A\3/' toto.txt [jp@MDK tmpfs] $ cat toto.txt 123123123 456456456 789A89789 123123123 456456456 789789789;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 sept. 2006 à 14:14
12 sept. 2006 à 14:14
Salut,
Tu peux donner un exemple plus précis (fichier en entrée et résultat escompté en sortie), s'il te plaît, merci.
Sinon tu peux déjà voir du côté de la commande "sed" (associée surement à d'autres pour ce que je pense avoir compris de ce que tu veux faire)
;-))
Tu peux donner un exemple plus précis (fichier en entrée et résultat escompté en sortie), s'il te plaît, merci.
Sinon tu peux déjà voir du côté de la commande "sed" (associée surement à d'autres pour ce que je pense avoir compris de ce que tu veux faire)
;-))
looping605
Messages postés
9
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
12 septembre 2006
12 sept. 2006 à 14:48
12 sept. 2006 à 14:48
Re-bonjour,
Je vais essayer d'être plus précis.
je veux pouvoir modifier un caractére dans un fichier via un script.
Par exemple j'ai un fichier toto.txt
dans ce fichier, j'ai les enregistrements suivants :
123123123
456456456
789789789
je souhaite substituer le caractére "7" de la 3eme ligne de la 4 éme colonne en un caractére "A" afin d'obtenir :
123123123
456456456
789A89789
Cela fonctionne si j'utilise le script toto.ksh suivant :
Serveur_Test>more toto.ksh
#!/usr/bin/ksh
vi toto.txt << EOT
:2
4l
rA
:x!
EOT
exit 0
Le problème se pose lorsque le fichier toto.txt, qui doit être éditer contient beaucoup trop d'enregistrement pour être edité avec "vi".
Dans ce cas, la proc. ne fonctionne pas.
J'ai essayé avec la commande "sed" mais je n'ai pas trouvé l'option permettant de passer en paramétre un n° de colonne.
Merci
Je vais essayer d'être plus précis.
je veux pouvoir modifier un caractére dans un fichier via un script.
Par exemple j'ai un fichier toto.txt
dans ce fichier, j'ai les enregistrements suivants :
123123123
456456456
789789789
je souhaite substituer le caractére "7" de la 3eme ligne de la 4 éme colonne en un caractére "A" afin d'obtenir :
123123123
456456456
789A89789
Cela fonctionne si j'utilise le script toto.ksh suivant :
Serveur_Test>more toto.ksh
#!/usr/bin/ksh
vi toto.txt << EOT
:2
4l
rA
:x!
EOT
exit 0
Le problème se pose lorsque le fichier toto.txt, qui doit être éditer contient beaucoup trop d'enregistrement pour être edité avec "vi".
Dans ce cas, la proc. ne fonctionne pas.
J'ai essayé avec la commande "sed" mais je n'ai pas trouvé l'option permettant de passer en paramétre un n° de colonne.
Merci
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 sept. 2006 à 14:58
12 sept. 2006 à 14:58
Salut,
123123123
456456456
789789789
je souhaite substituer le caractére "7" de la 3eme ligne de la 4 éme colonne en un caractére "A" afin d'obtenir :
123123123
456456456
789A89789
je n'ai pas testé, mais essaie quand même
123123123
456456456
789789789
je souhaite substituer le caractére "7" de la 3eme ligne de la 4 éme colonne en un caractére "A" afin d'obtenir :
123123123
456456456
789A89789
je n'ai pas testé, mais essaie quand même
perl -pi.orig -e 's/^(.*){3}./$1A/ if 3..3' toto.txtlami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 sept. 2006 à 16:19
12 sept. 2006 à 16:19
Salut lami20j,
Il y a un hic dans ta syntaxe ;-))
Il y a un hic dans ta syntaxe ;-))
[jp@MDK tmpfs] $ perl -pi.orig -e 's/^(.*){3}./$1A/ if 3..3' toto.txt [jp@MDK tmpfs] $ cat toto.txt 123123123 456456456 A 123123123 456456456 789789789Elle a tout mangé ;-)))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
looping605
Messages postés
9
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
12 septembre 2006
12 sept. 2006 à 16:20
12 sept. 2006 à 16:20
Salut,
Merci de ton aide.
J'ai testé la commande perl :
perl -pi.orig -e 's/^(.*){3}./$1A/ if 3..3' toto.txt
le soucis est que la troisième ligne est totalement substitué par le caractère "A" :
Serveur_Test>more toto.txt
123123123
456456456
A
Je pensais à un truc du genre :
cat toto.txt | sed -e "3s/7/A/g" > toto.txt_new1
ais dans ce cas tous les caractères "7" de la 3éme ligne vont être substitués par des caractères "A" comme suit :
Serveur_Test>more toto.txt_new1
123123123
456456456
A89A89A89
Et c'est là que je bloque, je ne vois pas comment donner en entrée de ma commande sed la position spécifique de caractère "7" à modifier sans que les autres "7" de cette ligne ne soient modifiés.
@+
Merci de ton aide.
J'ai testé la commande perl :
perl -pi.orig -e 's/^(.*){3}./$1A/ if 3..3' toto.txt
le soucis est que la troisième ligne est totalement substitué par le caractère "A" :
Serveur_Test>more toto.txt
123123123
456456456
A
Je pensais à un truc du genre :
cat toto.txt | sed -e "3s/7/A/g" > toto.txt_new1
ais dans ce cas tous les caractères "7" de la 3éme ligne vont être substitués par des caractères "A" comme suit :
Serveur_Test>more toto.txt_new1
123123123
456456456
A89A89A89
Et c'est là que je bloque, je ne vois pas comment donner en entrée de ma commande sed la position spécifique de caractère "7" à modifier sans que les autres "7" de cette ligne ne soient modifiés.
@+
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 sept. 2006 à 16:39
12 sept. 2006 à 16:39
Re,
le soucis est que la troisième ligne est totalement substitué par le caractère "A" :
Oui, je n'ai pas fait attention. C'est de ma faute.
.* avale la chaine entière ;)
Essaie
le soucis est que la troisième ligne est totalement substitué par le caractère "A" :
Oui, je n'ai pas fait attention. C'est de ma faute.
.* avale la chaine entière ;)
Essaie
perl -pi.orig -e 's/^(.{3})./$1A/ if 3..3' toto.txtlami20j
looping605
Messages postés
9
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
12 septembre 2006
12 sept. 2006 à 17:32
12 sept. 2006 à 17:32
ça c'est trop bon je prends.
je te remercit ça fonctionne du tonnerre.
Même les fichiers qui me posaient problème sont modifiés tranquillement.
Encore merci de votre aide.
@+
je te remercit ça fonctionne du tonnerre.
Même les fichiers qui me posaient problème sont modifiés tranquillement.
Encore merci de votre aide.
@+
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 sept. 2006 à 16:49
12 sept. 2006 à 16:49
Ok c'est nickel comme ça ;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 sept. 2006 à 16:50
12 sept. 2006 à 16:50
Salut,
te parles de ma ligne?!
je suis au boulot et je ne peux pas tester.
lami20j
te parles de ma ligne?!
je suis au boulot et je ne peux pas tester.
lami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
12 sept. 2006 à 17:08
12 sept. 2006 à 17:08
Oui, de ta ligne en aveugle ;-))
12 sept. 2006 à 16:51
Je vais voir ce que cela donne sur un dès fichiers que je ne pouvait modifier par ma première procédure.
mais ça va beaucoup m'aider.
Encore merci à tous.
12 sept. 2006 à 17:36
Mais je garde sous le coude ça peut toujours être utile.
Merci encore de ton aide
@+