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

  FORUM HardWare.fr
  Programmation
  C

  [csh] trouver et remplacer

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[csh] trouver et remplacer

n°1449561
in_your_ph​ion
Posté le 29-09-2006 à 12:06:56  profilanswer
 

bonjour,
 
je voudrais trouver dans tous mes sous dossier les fichiers qui contiennent la chaine "4*atan(1)" et les remplacer par la chaine "(4*atan(1))" ...est ce que c'est possible de faire ca en shell script ??? J'ai essayé avec sed mais les parenthèse posent pb apparement  :o  
 
merci par avance  :love:  :love:  :love:  
 

mood
Publicité
Posté le 29-09-2006 à 12:06:56  profilanswer
 

n°1449745
Sve@r
Posté le 29-09-2006 à 15:23:07  profilanswer
 

in_your_phion a écrit :

bonjour,
 
je voudrais trouver dans tous mes sous dossier les fichiers qui contiennent la chaine "4*atan(1)" et les remplacer par la chaine "(4*atan(1))" ...est ce que c'est possible de faire ca en shell script ??? J'ai essayé avec sed mais les parenthèse posent pb apparement  :o  
 
merci par avance  :love:  :love:  :love:


 
Déjà ce n'est pas du C mais du shell (même du C-shell reste du shell) - T'as une rubrique pour ça.
Ensuite, si tu nous montrais ce que t'as fait en script on pourrait mieux comprendre. Par exemple si t'as mis des guillemets simples ou doubles, la gestion des caractères spéciaux n'est pas la même.
 
Essaye ça (jle fais de tête)

Citation :

#!/bin/sh
cd repertoire_ou_il_faut_remplacer_les_fichiers
ls |while read file
do
    test ! -f "$file" && continue
    sed -e "s/4 * atan(1)/(4 * atan (1))/g" "$file" >tmp
    mv tmp "$file"
done


 
Si ça marche pas, protège les parenthèses par des backslashes

Citation :

sed -e "s/4 * atan\(1\)/\(4 * atan \(1\)\)/g" "$file" >tmp


Message édité par Sve@r le 29-09-2006 à 16:12:43

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1450381
Zavie
Test, du travail de pro !
Posté le 01-10-2006 à 13:34:33  profilanswer
 

Salut,
 
C'est bien sed qu'il faut que tu utilises.
$ echo 'foobar4*atan(1)bar4*atan(1)baz' > test-sed
$ sed -s 's/4*atan(1)/(4*atan(1))/g' < test-sed  
foobar4*(4*atan(1))bar4*(4*atan(1))baz
$

n°1450384
Zavie
Test, du travail de pro !
Posté le 01-10-2006 à 13:36:28  profilanswer
 

Ah, et puis pour la récursion ça donnerait quelque chose comme :
$ for i in `find .`; do sed -s 's/4*atan(1)/(4*atan(1))/g' < "$i" > tmp; mv tmp "$i";done
 
Cela dit je n'ai pas testé, donc attention. ;-)

n°1450387
Zavie
Test, du travail de pro !
Posté le 01-10-2006 à 13:39:29  profilanswer
 

Mince je raconte n'importe quoi, for n'existe pas en csh... :-/
Tu n'as pas accès à un vrai (Bourne) shell (bash, zsh) ?

n°1450437
Sve@r
Posté le 01-10-2006 à 16:53:02  profilanswer
 

Zavie a écrit :

Ah, et puis pour la récursion ça donnerait quelque chose comme :
$ for i in `find .`; do sed -s 's/4*atan(1)/(4*atan(1))/g' < "$i" > tmp; mv tmp "$i";done


Attention à la syntaxe "for var in `commande`" car si "commande" renvoie une info avec un espace, le "for" découpera l'info en 2 itérations. Chaque itération n'ayant qu'une partie de l'info ne fonctionnera pas et l'info ne sera pas traitée...
Mieux vaut préférer la syntaxe "commande |while read var" car le read arrête sa lecture au "return"
 

Zavie a écrit :

Mince je raconte n'importe quoi, for n'existe pas en csh... :-/


Boaf il y a probablement son équivalent
 

Zavie a écrit :

Tu n'as pas accès à un vrai (Bourne) shell (bash, zsh) ?


[:rofl]


Message édité par Sve@r le 01-10-2006 à 16:55:06

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1450521
Zavie
Test, du travail de pro !
Posté le 01-10-2006 à 21:17:33  profilanswer
 

Ah merci pour l'astuce. C'est vrai que cette histoire d'espace est souvent assez gênante...


---------------
Viendez vous battre à Prologin \o/
n°1452223
in_your_ph​ion
Posté le 04-10-2006 à 15:40:51  profilanswer
 

Zavie a écrit :

Mince je raconte n'importe quoi, for n'existe pas en csh... :-/
Tu n'as pas accès à un vrai (Bourne) shell (bash, zsh) ?


 
coucou,
 
si :) en fait je pensais que csh était bien  :sweat:  ?

n°1454510
Zavie
Test, du travail de pro !
Posté le 09-10-2006 à 17:45:20  profilanswer
 

C'est "un peu" vieux (il y a eu tcsh depuis), et surtout, le standard c'est quand même d'être compatible Bourne.


---------------
Viendez vous battre à Prologin \o/
n°1454526
Sve@r
Posté le 09-10-2006 à 18:19:02  profilanswer
 

Zavie a écrit :

le standard c'est quand même d'être compatible Bourne.


Ya rien qui oblige car chaque script s'exécute dans l'environnement qui lui est défini par sa première ligne  

#! <chemin_vers interpréteur>


 
Donc même si tu bosses en bash, tu pourras parfaitement exécuter un script csh (pour peu qu'il possède cette fameuse ligne)...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
mood
Publicité
Posté le 09-10-2006 à 18:19:02  profilanswer
 

n°1454761
Zavie
Test, du travail de pro !
Posté le 10-10-2006 à 11:57:36  profilanswer
 

Citation :

Ya rien qui oblige car chaque script s'exécute dans l'environnement qui lui est défini par sa première ligne  

#! <chemin_vers interpréteur>


 
Donc même si tu bosses en bash, tu pourras parfaitement exécuter un script csh (pour peu qu'il possède cette fameuse ligne)...

Je ne dis pas le contraire, seulement le standard c'est le shell Bourne (sh dans un script, bash ou zsh dans un terminal histoire d'avoir un minimum de confort). Quand je lance un grep dans /etc/init.d sur une Debian classique, j'ai une énorme majorité de /bin/sh, quelques /bin/bash, et aucun csh.
 
Autant utiliser les outils standards, et surtout, pourquoi se galérer avec un shell antédiluvien pour réaliser une opération de tous les jours sur son arborescence ?


---------------
Viendez vous battre à Prologin \o/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [csh] trouver et remplacer

 

Sujets relatifs
[BATCH]Remplacer chaîne par une autre chaîne récupérééModifier plusieurs pages html à la volée via "rechercher/remplacer"
[PHP... ou autres] trouver les termes liés dans un texteTrouver un point dans une chaine
[VBA] trouver le premier jour d'une anneeRechercher/Remplacer TROP LOURD en VBA WORD - Avis aux pros !
quelle expression régulière pour trouver un caractère précis ?Trouver la balise d'un texte que l'on cherche.
Où trouver une archive de ces sources ?[PYTHON] Trouver le path d'une classe / d'un module
Plus de sujets relatifs à : [csh] trouver et remplacer


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