Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1306 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [ksh] Ecrire sans fichier temporaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ksh] Ecrire sans fichier temporaire

n°1900597
Tonio94
Posté le 30-06-2009 à 15:10:55  profilanswer
 

Bonjour,
 
 
Dans un script en ksh (sous Solaris) j'ai besoin d'écrire une ligne dans 2 fichiers, le premier tout à la fin et le second à l'avant dernière ligne (en conservant la dernière).
 
Pas de soucis pour faire ça avec sed, le problème est qu'il me créé un fichier temporaire que je dois renommer avec le nom du bon fichier et donc supprimer le bon fichier.
 
Problème : Je n'ai pas les droits pour rm et pour mv. Je peux juste écrire dans le fichier. Alors j'aimerais pouvoir le faire avec un simple appel Perl (-i), si quelqu'un pouvait m'aider pour la syntaxe à utiliser.
 
 
Merci.
 

mood
Publicité
Posté le 30-06-2009 à 15:10:55  profilanswer
 

n°1900602
pataluc
Posté le 30-06-2009 à 15:19:19  profilanswer
 

avec sed, normalement tu as une technique pour réécrire dans le même fichier... je sais plus ce que c'est, je cherche.

n°1900605
pataluc
Posté le 30-06-2009 à 15:23:38  profilanswer
 

Code :
  1. man sed
  2. ...
  3.        -i[SUFFIX], --in-place[=SUFFIX]
  4.               edit files in place (makes backup if extension supplied)

par contre c gnu donc ca doit pas marcher sur tous les systèmes. Dsl si j'ai enfoncé une porte ouverte. :D


Message édité par pataluc le 30-06-2009 à 15:24:32
n°1900608
Tonio94
Posté le 30-06-2009 à 15:28:15  profilanswer
 

J'ai oublié de préciser que le problème se pose surtout dans deux cas de figure :
 
- Avec le second fichier où je dois supprimer la dernière ligne, insérer la mienne, remettre la dernière.
 
- Et dans le cas où je dois supprimer ma ligne dans ces 2 fichiers, la suppression avec sed entraîne toujours la création d'un fichier temporaire.
 
Et je viens de regarder sous Solaris je n'ai pas l'option -i  :\


Message édité par Tonio94 le 30-06-2009 à 15:28:48
n°1904836
Sve@r
Posté le 13-07-2009 à 11:24:52  profilanswer
 

Tonio94 a écrit :

Bonjour,
 
 
Dans un script en ksh (sous Solaris) j'ai besoin d'écrire une ligne dans 2 fichiers, le premier tout à la fin et le second à l'avant dernière ligne (en conservant la dernière).
 
Pas de soucis pour faire ça avec sed, le problème est qu'il me créé un fichier temporaire que je dois renommer avec le nom du bon fichier et donc supprimer le bon fichier.
 
Problème : Je n'ai pas les droits pour rm et pour mv. Je peux juste écrire dans le fichier. Alors j'aimerais pouvoir le faire avec un simple appel Perl (-i), si quelqu'un pouvait m'aider pour la syntaxe à utiliser.
 
 
Merci.
 


 
Intéressant. T'as le droit "w" sur le fichier mais pas sur le répertoire qui le contient.
 
Il y a une technique shell pour lire et écrire le même fichier sans passer par un fichier temporaire malheureusement elle nécessite d'avoir le droit d'effacement

Code :
  1. #!/bin/sh
  2. exec 3<fichier_a_traiter
  3. rm -f fichier_a_traiter
  4. while read line 0<&3
  5. do
  6.     # traitement de la ligne
  7.     ... $line .... $line ...
  8. done >fichier_a_traiter


 
Le rm -f est obligatoire car il permet de détacher logiquement le nom du fichier de ses data. Les data sont toujours dans le buffer 3 mais le nom ne leur sont plus associées. Et donc quand tu recrées le fichier via la redirection, le système lui attribue un nouvel ident et va y écrire les data.
Si tu ne fais pas de rm, alors le nom du fichier est toujours associé aux data et la redirection va les purger avant qu'elles ne soient lues et le buffer 3 ne contient alors plus rien.
D'où l'obligation impérative de pouvoir faire du rm.
 
Sinon désolé, je ne connais pas le perl...


Message édité par Sve@r le 13-07-2009 à 11:26:23

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [ksh] Ecrire sans fichier temporaire

 

Sujets relatifs
visual 2005 et fichier redistouvrir un fichier avec pour nom un stringstream
Parser fichier XML[VBS] Supprimer des espaces dans un fichier texte
Récupérer cellules d'un fichier sans l'ouvrirOuvrir un répertoir et lister les fichier VBA
Ouvrir un fichierProbleme pour lire un fichier xml
Probléme pour récuperer le nom du Fichier API Windowsscript gestionnaire de fichier
Plus de sujets relatifs à : [ksh] Ecrire sans fichier temporaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR