Sortir un document en UNIX

Résolu/Fermé
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 - 3 oct. 2012 à 13:58
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 3 oct. 2012 à 17:41
Bonjour à tous,

Je cherche à :
- ouvrir des pages html (environ 5 000),
- les modifier
- sauver sur le même fichier

C'est sur la dernière étape que je bloque...

je fais un boucle :

for i in $(ls),do sed 's+aaa+bbb+g' $i>>$i

Mais ca me mets mes modifs à la suite du document , sans doute a cause de ">>"
Comment faire pour enregistrer mes modifs sur le même document sans avoir les anciennes données ?

D'avance merci !

4 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
3 oct. 2012 à 14:05
Salut,

Sur quel système es-tu ?
Quelle version de "sed" ?
0
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 15
3 oct. 2012 à 14:30
Je suis sur le terminal de Mac Os 10.6
comment connaitre la version de sed ? sed -v ne marche pas...
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
3 oct. 2012 à 14:34
Regarde sur la sortie de "sed -v" si l'option "-i" existe ou dans le man.
0
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 15
3 oct. 2012 à 17:15
en fait je n'ai pas de pb avec sed, c'est juste que je n'arrive pas à faire une sortie :(
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
Modifié par zipe31 le 3/10/2012 à 17:19
D'où ma demande et savoir si ta version de 'sed' comprend l'option "-i" qui permet de modifier les fichiers "en place" :

sed -i.bak 's/aaa/bbb/' fichier

Modifie directement le fichier "fichier" et crée en prime une sauvegarde nommée "fichier.bak".

Sans cette option il te faudra obligatoirement passer par un fichier temporaire :

sed 's/aaa/bbb/' fichier > fichier.tmp && mv fichier.tmp fichier
0
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 15
3 oct. 2012 à 17:34
Ah oui c'est enorme merci ça marche !
et si je ne vaux pas creer les .bak ? c'est possible ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
3 oct. 2012 à 17:41
Oui, c'est juste une sécurité au cas ou...
0
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 15
3 oct. 2012 à 17:29
Ah ok,

oui j'ai l'option -i !

man sed :

The following options are available:

     -E      Interpret regular expressions as extended (modern) regular
             expressions rather than basic regular expressions (BRE's).  The
             re_format(7) manual page fully describes both formats.

     -a      The files listed as parameters for the ''w'' functions are cre-
             ated (or truncated) before any processing begins, by default.
             The -a option causes sed to delay opening each file until a com-
             mand containing the related ''w'' function is applied to a line
             of input.

     -e command
             Append the editing commands specified by the command argument to
             the list of commands.

     -f command_file
             Append the editing commands found in the file command_file to the
             list of commands.  The editing commands should each be listed on
             a separate line.

     -i extension
             Edit files in-place, saving backups with the specified extension.
             If a zero-length extension is given, no backup will be saved.  It
             is not recommended to give a zero-length extension when in-place
             editing files, as you risk corruption or partial content in situ-
             ations where disk space is exhausted, etc.

     -l      Make output line buffered.

     -n      By default, each line of input is echoed to the standard output
             after all of the commands have been applied to it.  The -n option
             suppresses this behavior.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
3 oct. 2012 à 17:31
Alors y'a plus qu'à...
0