![]() |
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| Comportement étrange de script dans le crontab | PilotGoose | De programmation et de script Shell | 1 | 06-26-2008 10:54 AM |
| Aide bizarre avec mon script! | kdyzsa | De programmation et de script Shell | 1 | 06-15-2008 11:39 PM |
| Weird sudo comportement | geomonap | UNIX for Advanced & Expert Users | 1 | 02-03-2006 05:08 PM |
| aucune explication pour ce comportement de script shell | xiamin | De programmation et de script Shell | 9 | 11-09-2001 01:13 PM |
| Weird script | Duckman | UNIX pour les nuls Questions et réponses | 2 | 03-14-2001 01:53 PM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Weird sed comportement script
J'ai écrit un petit script pour remplacer certains mots dans tous les fichiers dans un répertoire. Code:
#!/bin/sh #Get list of files to be edited file_list=`ls -p` for i in $file_list do echo "Processing $i" alteredi=`echo "$i" | sed -e 's/\//d/'` if [ $i = $alteredi ] then if [ $i != "maketest" ] then #actual altering cat $i | sed -e "s/login\//login.tst\//" > $i cat $i | sed -e "s/cyberkd\//cyberkd.tst\//" > $i cat $i | sed -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" > $i echo " $i has been altered" else echo " Not altering myself" fi else echo " Not altering directories" fi done Maintenant, quand je lancer ce script comme un utilisateur normal, seul le premier 4kb du fichier est traité. Donc tous les fichiers de plus de 4kb sont réduits de moitié. Les octets restants sont juste à gauche du nouveau fichier. Lorsque j'ai couru le script en tant que root, 8ko ont été traitées. Existe-t-il un moyen de traiter l'ensemble des fichiers? Quand je chat un grand fichier texte l'ensemble du fichier est imprimé sur mon écran. Merci d'avance. |
|
||||
|
Ne pas lire et écrire dans le même dossier et de chat avec sed est redondant, le remplacement de ces lignes: Code:
cat $i | sed -e "s/login\//login.tst\//" > $i cat $i | sed -e "s/cyberkd\//cyberkd.tst\//" > $i cat $i | sed -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" > $i avec: Code:
sed -e "s/login\//login.tst\//" -e "s/cyberkd\//cyberkd.tst\//" -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" "$1" > temp.file mv temp.file "$1" Si vous êtes sed version supporte le flag-i, vous pouvez éditer le fichier en place sans l'aide d'un fichier temporaire. Code:
sed -i -e "s/login\//login.tst\//" -e "s/cyberkd\//cyberkd.tst\//" -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" "$1" Observe Dernière édition par Franklin52; au 08.30.2008 08:52 AM.. |
![]() |
| Bookmarks |
| Tags |
| chat, sed, shell |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|