![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Vreemd gedrag van script in crontab | PilotGoose | Programmeren en Shell Scripting | 1 | 06-26-2008 10:54 |
| Helpen met mijn script raar! | kdyzsa | Programmeren en Shell Scripting | 1 | 06-15-2008 11:39 PM |
| Weird sudo gedrag | geomonap | UNIX for Advanced & Expert Gebruikers | 1 | 02-03-2006 05:08 PM |
| een verklaring voor deze shell script gedrag | xiamin | Programmeren en Shell Scripting | 9 | 11-09-2001 01:13 PM |
| Weird script | Duckman | UNIX voor Dummies Questions & Answers | 2 | 03-14-2001 01:53 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Weird sed gedrag in script
Ik heb een klein script ter vervanging van bepaalde woorden in alle bestanden in een directory. 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 Nu, als ik dit script als een normale gebruiker, alleen de eerste 4Kb van het bestand is verwerkt. Dus alle bestanden die groter zijn dan 4Kb zijn gehalveerd. De resterende bytes zijn weggelaten uit het nieuwe bestand. Toen ik liep het script als root, 8KB waren verwerkt. Is er een manier om de hele bestanden? Toen ik kat een groot tekstbestand het hele bestand wordt afgedrukt op mijn scherm. Thanks in advance. |
|
||||
|
Niet lezen en schrijven naar hetzelfde bestand en het gebruik van katten met sed is overbodig, vervang deze lijnen: 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 met: 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" Als u sed versie ondersteunt de-i vlag kunt u het bestand in plaats zonder gebruik van een tijdelijk bestand. Code:
sed -i -e "s/login\//login.tst\//" -e "s/cyberkd\//cyberkd.tst\//" -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" "$1" Groeten Laatst gewijzigd door Franklin52; op 08.30.2008 08:52.. |
![]() |
| Bladwijzers |
| Labels |
| kat, sed, shell |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|