The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



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
Tabellen zoekopdracht te vinden gebruikers voor database van shell script Pinnacle Programmeren en Shell Scripting 0 04-10-2009 06:18 PM
te vinden of de update query succesvol is of niet met behulp van ksh Script ali560045 Programmeren en Shell Scripting 3 01-07-2009 01:41
Find-mtime zoekopdracht Rajat UNIX voor Dummies Questions & Answers 1 07-09-2008 08:12
vraag over het vinden en-exec shriashishpatil UNIX for Advanced & Expert Gebruikers 2 04-12-2007 02:16
Find-perm zoekopdracht napolayan UNIX voor Dummies Questions & Answers 1 11-28-2006 02:28 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 05-26-2009
lightdensity lightdensity is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Posten: 6
zoeken en vervangen zoekopdracht

Hallo ppl,

Ik ben het schrijven van een script dat meerdere woorden vindt match en het vervangen met nieuwe woorden.
Ik heb server.conf bestand dat er uit ziet

Code:
### Welcome to server ###
### Server address and port ###
 
Server=127.0.0.1 
### Replace Server=0.0.0.0 ###
 
ServerPort=0
### Replace ServerPort=1 ####
### Enable Server ##
 
Enable Server=1
 
### Replace Enable Server=0 ###
### END OF FILE ##

-------------------------------------------------- ---------
Ik heb geschreven code voor, zoals hieronder weergegeven

Code:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done

Maar toen ik mijn script dat alleen in de plaats van de eerste wedstrijd (Server \u003d 0.0.0.0). Resterende twee wedstrijden doesnt veranderen.
Ik weet niet wat er mis met mijn code.

Kan iemand me helpen op deze?
Thanks in advance

Laatst gewijzigd door lightdensity; op 05.26.2009 01:14 PM..
  #2 (permalink)  
Old 05-26-2009
devtakh devtakh is offline
Geregistreerde gebruiker
  
 

Join Datum: oktober 2007
Locatie: Bangalore
Posts: 514

Code:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf

-Devaraj Takhellambam
  #3 (permalink)  
Old 05-26-2009
lightdensity lightdensity is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Posten: 6
Citaat:
Oorspronkelijk geplaatst door devtakh View Post
Code:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf

-Devaraj Takhellambam
bedankt voor je reactie .. Eigenlijk ben ik tot nieuwe shell scripting

Code:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done

Dus, hoe om te achterhalen welke voor de juiste snaar?

bedankt
  #4 (permalink)  
Old 05-26-2009
BubbaJoe's Avatar
BubbaJoe BubbaJoe is offline
Geregistreerde gebruiker
  
 

Join Datum: oktober 2008
Locatie: St Louis
Posts: 153
Uw IFS is verkeerd. De IFS \u003d "", zegt er geen scheidingsteken zodat het hele bestand wordt gelezen. U kunt alleen gebruik maken van IFS is er eigenlijk een seperator tussen elk veld. Dus kat $ FILE niet geven u regel voor regel zal geven terwijl u het bestand als een gebied in een keer. Vandaar matching slechts 1 keer. Aangezien je echt wilt bekijken op elke lijn als een record dient u gebruik te maken awk of sed te vinden en de plaats van de tekst.

Dus zal dit werk voor u, die werd gepost door devtakh die zegt zoeken op het gehele bestand en de plaats van de matching patroon met het gegeven patroon voor elk geval dat u wilt wijzigen. Het vindt elk een afzonderlijk en het bestand veranderen de manier waarop u wilt.

sed '/ Server \u003d 127.0.0.1 / (s / / Server \u003d 0.0.0.0 / g)
/ Serverport \u003d 0 / (s / / Serverport \u003d 1 / g)
/ Enable Server \u003d 1 / (s / / Enable Server \u003d 0 / g)
'/ Opt / server.conf> / opt / new_server.conf
  #5 (permalink)  
Old 05-26-2009
lightdensity lightdensity is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Posten: 6
Citaat:
Oorspronkelijk geplaatst door BubbaJoe View Post
Uw IFS is verkeerd. De IFS \u003d "", zegt er geen scheidingsteken zodat het hele bestand wordt gelezen. U kunt alleen gebruik maken van IFS is er eigenlijk een seperator tussen elk veld. Dus kat $ FILE niet geven u regel voor regel zal geven terwijl u het bestand als een gebied in een keer. Vandaar matching slechts 1 keer. Aangezien je echt wilt bekijken op elke lijn als een record dient u gebruik te maken awk of sed te vinden en de plaats van de tekst.
dank voor de hulp ..

maar wat als ik
IFS \u003d "\ n \ t"

dan denk ik, cat $ FILE zal lijn per lijn ..

ok! Ik zal proberen het uit .. Ondertussen kan u mijn resterende code .. en zeg al mijn code juist is of niet.

bedankt
  #6 (permalink)  
Old 05-26-2009
devtakh devtakh is offline
Geregistreerde gebruiker
  
 

Join Datum: oktober 2007
Locatie: Bangalore
Posts: 514
Citaat:
Oorspronkelijk geplaatst door lightdensity View Post
bedankt voor je reactie .. Eigenlijk ben ik tot nieuwe shell scripting

Code:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done

Dus, hoe om te achterhalen welke voor de juiste snaar?

bedankt
Het zal een verspilling van middelen gebruik te maken van de shell-script bij het sed kan het aan. hoeft u niet te controleren of het woord bestaat en indien aanwezig, dan vervangen. sed kan dat voor je doen.
Incase Maar je hoeft te doen .. Ik stel voor dat u gebruikt, terwijl lus, in plaats van een lus met de kat commando.


Code:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
       while read line
   do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done < $FILE

-Devaraj Takhellambam
  #7 (permalink)  
Old 05-27-2009
lightdensity lightdensity is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Posten: 6
Citaat:
Oorspronkelijk geplaatst door devtakh View Post
Code:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf

-Devaraj Takhellambam
Hi Devaraj Takhellambam,

Uw oplossing werkt prima ... maar ik ben geconfronteerd met nieuwe problemen nu ... Eigenlijk heb ik niet gesproken over mijn volledige input bestand dat is

Code:
### Welcome to server ###
### Server address and port ###
 
Server=127.0.0.1 
### Replace Server=0.0.0.0 ###
 
ServerPort=0
### Replace ServerPort=1 ####
### Enable Server ##
 
Enable Server=1
 
### Replace Enable Server=0 ###
 
Enable Agent=1
Enable ip=1
 
### Now I dont need to change above two options ###
### END OF FILE ##

Dus wat heb ik uitgevoerd eruit

Code:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
    exec 0<$FILE
    while read line
do
     #echo ${line}
     if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
     then
              echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
     elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
     then
             echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
     elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
     then
             echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
     else
             echo ${line} >>$NEW_FILE
     fi
     done < $FILE

Output-bestand ziet er als

Code:
Server=0.0.0.0
ServerPort=1
Enable Server=0

Dus toen ik voer mijn code, output-bestand bevat alleen de snaren die ik heb veranderd, zijn er bepaalde tekenreeksen die i wilt kopiëren als zij.

Sorry i am dwars u veel ...

bedankt
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 03:15.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0