Ksh modifier un fichier
Résolu/Fermé
rojina2903
Messages postés
96
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
5 juin 2009
-
11 juil. 2008 à 16:06
Emma - 15 juil. 2008 à 15:51
Emma - 15 juil. 2008 à 15:51
A voir également:
- Ksh modifier un fichier
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
6 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
11 juil. 2008 à 16:31
11 juil. 2008 à 16:31
Salut,
Essaie comme ça :
"ATTENTION !!!" : Il ne faut pas d'espace entre les 2 crochets ouvrant de "[digit]", dans l'exemple ci-après c'est juste pour palier l'interprétation de ces caractères par la syntaxe propre à CCM ;-(
Si tu veux que ce soit permanet, utilises l'option "-i" (modification en place) de sed :
Essaie comme ça :
"ATTENTION !!!" : Il ne faut pas d'espace entre les 2 crochets ouvrant de "[digit]", dans l'exemple ci-après c'est juste pour palier l'interprétation de ces caractères par la syntaxe propre à CCM ;-(
[jp@MDK-2008 trash]$ cat fichier.txt HEXAPOST_SEQ=01 HEXAVIA_SEQ=21 HEXACLE_SEG=41 CEDEXA_SEQ=61 SEMAINE=0 [jp@MDK-2008 trash]$ var=7;sed "/SEMAINE/ s/[ [:digit:]]/$var/" fichier.txt HEXAPOST_SEQ=01 HEXAVIA_SEQ=21 HEXACLE_SEG=41 CEDEXA_SEQ=61 SEMAINE=7 [jp@MDK-2008 trash]$
Si tu veux que ce soit permanet, utilises l'option "-i" (modification en place) de sed :
[jp@MDK-2008 trash]$ cat fichier.txt HEXAPOST_SEQ=01 HEXAVIA_SEQ=21 HEXACLE_SEG=41 CEDEXA_SEQ=61 SEMAINE=0 [jp@MDK-2008 trash]$ var=7;sed -i.bak "/SEMAINE/ s/[ [:digit:]]/$var/" fichier.txt [jp@MDK-2008 trash]$ cat fichier.txt HEXAPOST_SEQ=01 HEXAVIA_SEQ=21 HEXACLE_SEG=41 CEDEXA_SEQ=61 SEMAINE=7 [jp@MDK-2008 trash]$;-))
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
11 juil. 2008 à 17:26
11 juil. 2008 à 17:26
Mais pourquoi fais-tu un "echo" ?! ;-\
Passe directement ton fichier à "sed" !
Passe directement ton fichier à "sed" !
rojina2903
Messages postés
96
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
5 juin 2009
13
11 juil. 2008 à 17:33
11 juil. 2008 à 17:33
quand je fais:
sed "/SEMAINE/ s/[ [:digit:] ]/$var/" mediapost.txt
il m'affiche le bon résultat (ce que je veux) mais il modifie pas le fichier mediapost.txt
et si je fais:
`sed "/SEMAINE/ s/[ [:digit:] ]/$var/" mediapost.txt`>mediapost.txt
tout le contenu de mediapost.txt est s'ecrase alors j'obtiens un fichier vide, c'est pour cela que je fai un echo pour pouvoir ecrire dans le fichier
donc comment je dois faire?
sed "/SEMAINE/ s/[ [:digit:] ]/$var/" mediapost.txt
il m'affiche le bon résultat (ce que je veux) mais il modifie pas le fichier mediapost.txt
et si je fais:
`sed "/SEMAINE/ s/[ [:digit:] ]/$var/" mediapost.txt`>mediapost.txt
tout le contenu de mediapost.txt est s'ecrase alors j'obtiens un fichier vide, c'est pour cela que je fai un echo pour pouvoir ecrire dans le fichier
donc comment je dois faire?
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
11 juil. 2008 à 17:38
11 juil. 2008 à 17:38
La réponse est dans mon 1er post !!! Il faut utiliser l'option "-i" de sed !
rojina2903
Messages postés
96
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
5 juin 2009
13
11 juil. 2008 à 17:47
11 juil. 2008 à 17:47
oui c'est vrai mais il m'affiche que c'est une option illegale
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
11 juil. 2008 à 17:52
11 juil. 2008 à 17:52
sed "/SEMAINE/ s/[ [:digit:] ]/$var/" mediapost.txt > fich.tmp && mv -f fich.tmp mediapost.txt;-))
coucou je cherche la même chose mais juste que le nouveau nombre soit le nombre que l'utilisateur a tapé.
exemple :
dans le fichier.txt : test=0
la console demande : quelle est la nouvelle valeur ? réponse :
l'utilisateur tape 7
et la modification se fait dans le fichier de façon permanente
merci d'avance :)
exemple :
dans le fichier.txt : test=0
la console demande : quelle est la nouvelle valeur ? réponse :
l'utilisateur tape 7
et la modification se fait dans le fichier de façon permanente
merci d'avance :)
rojina2903
Messages postés
96
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
5 juin 2009
13
>
Emma
15 juil. 2008 à 11:21
15 juil. 2008 à 11:21
salut
c'est la meme ligne de commande que jipicy a donné
cat fichier.ksh
#!/usr/bin/ksh
echo Saisir la nouvelle valeur
read val
`sed "/test/ s/[ [:digit:] ]/$val/" fichier.txt >fich.tmp && mv -f fich.tmp fichier.txt`
cat fichier.txt
test=0
c'est la meme ligne de commande que jipicy a donné
cat fichier.ksh
#!/usr/bin/ksh
echo Saisir la nouvelle valeur
read val
`sed "/test/ s/[ [:digit:] ]/$val/" fichier.txt >fich.tmp && mv -f fich.tmp fichier.txt`
cat fichier.txt
test=0
Emma
>
rojina2903
Messages postés
96
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
5 juin 2009
15 juil. 2008 à 12:26
15 juil. 2008 à 12:26
merci ça marche mais juste un truc je me retrouve avec deux fichiers test.txt ensuite dans le dossier, cela n'écrase pas le précédent...
Emma
>
rojina2903
Messages postés
96
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
5 juin 2009
15 juil. 2008 à 15:51
15 juil. 2008 à 15:51
un autre petit problème aussi, par exemple si je tape comme nombre 3.5, il m'affiche dans le fichier 3.500, est il possible d'éviter cela ?
rojina2903
Messages postés
96
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
5 juin 2009
13
15 juil. 2008 à 09:16
15 juil. 2008 à 09:16
salut
merci jipicy
ça marche très bien
merci d'etre toujours là à nous aider sur CCM :)
merci jipicy
ça marche très bien
merci d'etre toujours là à nous aider sur CCM :)
11 juil. 2008 à 17:09
j'ai essayé et ça marche sauf que c'est le meme probleme que j'avait (presque) ça modifie la structure de mon fichier
je suis obligé d'ecrasé le contenu et de réecrire avec ">" afin de voir la modification sur le fichier et c 'est ce qui cause ce changement de forme
je fais:
echo `sed "/SEMAINE/ s/[ [:digit:] ]/$var/" mediapost.txt`>mediapost.txt
et ça donne:
HEXAPOST_SEQ=01 HEXAVIA_SEQ=21 HEXACLE_SEG=41 CEDEXA_SEQ=61 SEMAINE=7
merci