Rechercher : dans
Par :

Sed en sortie sur fichier identique

Dernière réponse le 6 fév 2008 à 11:29:03 anloanm, le 5 fév 2008 à 10:27:48 
 Signaler ce message aux modérateurs

Bonjour, j'ai une commande basique de sed pour Unix :


sed 's/MotSource/MotDestination/g' infile > outfile

le problème est que je voudrais que la modification se retrouve sur le même fichier bien entendue.

ex: sed 's/toto/titi/g' michel.txt > michel.txt

chaque fois fois je me retrouve avec un fichier vide.

Merci beaucoup pour toute aide.

PS : déjà essayé les astuces de commentcamarche et ailleurs + livres

Configuration: Windows XP / Unix
Internet Explorer 6.0

Meilleures réponses pour « sed en sortie sur fichier identique » dans :
Sed - Substitution Voir Substitution Substitution basique Simple Globale Ciblée Substitution conditionnée Simplee Avancée Bloc Avancéé Substitution basique Simple - 1ère occurrence (de chaque ligne) rencontrée uniquement sed 's/la/LA/' fichier.txt
Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF) VoirConversion format de fichier DOS UNIX / UNIX DOS Préambule Ce qu'il faut savoir Conversion DOS vers UNIX Conversion UNIX vers DOS Préambule Il existe déjà des utilitaires (dos2unix et unix2dos) qui s'acquittent très bien ce...
Sed - Insérer des espacements VoirEspacement dans un fichier * Ajouter une ligne blanche après chaque phrase (ponctuée par un retour chariot) : sed G fichier.txt Ajouter une ligne blanche après chaque phrase (ponctuée par un retour chariot), sans tenir compte des lignes...
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
Perl - Les fichiers VoirLa notion de filehandle On appelle filehandle (traduisez descripteur de fichier), dans un programme Perl, le nom permettant de manipuler une connexion d'entrée-sortie (les entrées-sorties standards vues précédemment sont connues par les filehandles...
Perl - Entrée et sortie standards VoirQu'appelle-t-on entrée standard et sortie standard ? Perl permet d'écrire sur la sortie standard, appelée STDOUT et de lire sur l'entrée standard (STDIN). Il s'agit de deux descripteurs fournis par le système d'exploitation et permettant...

1

jipicy, le 5 fév 2008 à 10:46:09

Salut,

Il te faut obligatoirement passer par un fichier temporaire :

sed 's/toto/titi/g' < michel.txt > michel.tmp
mv michel.tmp  michel.txt
à moins d'avoir une version de "sed" supérieur à la 4.0.5 et bénéficier du switch "-i" (in-place), qui comme son nom l'indique modifie le fichier d'entrée "sur place" :
sed -i.BAK 's/toto/titi/g'  michel.txt
L'extension ".BAK" est facultative, elle permet de faire une sauvegarde de l'original...

;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

anloanm, le 5 fév 2008 à 11:02:47

Salut,

C'est exactement ce qu'il me fallait :

sed 's/toto/titi/g' < michel.txt > michel.tmp | mv michel.tmp michel.txt

Merci beaucoup pour ton aide rapide et efficace.

anloanm

Répondre à anloanm

3

lami20j, le 5 fév 2008 à 11:08:48

Salut,

Il te faut obligatoirement passer par un fichier temporaire :
t'en es sûr ;-))

root@debian:~# cat fichier.txt
titi
titi
root@debian:~# fic=$(cat fichier.txt);echo "$fic" | sed 's/titi/toto/' > fichier.txt
root@debian:~# cat fichier.txt
toto
toto
root@debian:~# 

lami20j

Répondre à lami20j

4

jipicy, le 5 fév 2008 à 11:14:39

Hi,

Voui j'en suis sûr, enfin moins maintenant espèce de faux perlien à la noix ;-)))

Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

5

lami20j, le 5 fév 2008 à 11:27:22

;-)
lami20j

Répondre à lami20j

6

anloanm, le 6 fév 2008 à 11:22:10

Bien

J'avais donc :

sed '/COMPTAB/ s/Manual/Auto/' < dede.txt > dede.tmp && mv dede.tmp dede.txt

et maintenant :

fic=$(cat dede.txt);echo "$fic" | sed '/COMPTAB/ s/Manual/Auto/' > dede.txt

les deux font la même chose mais l'approche est différente.

Merci beaucoup

anloanm

Répondre à anloanm

7

 jipicy, le 6 fév 2008 à 11:29:03

Merci ;-))
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy
Collection CommentÇaMarche.net