The UNIX and Linux Forums  


Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Sök och ersätt NycUnxer UNIX for Dummies Frågor & Svar 4 03-06-2008 12:20
hitta ersätta dbsurf Shell-programmering och Skript 2 01-25-2008 08:39
Sök och ersätt mahabunta UNIX for Dummies Frågor & Svar 7 09-21-2006 01:05
Sök och ersätt vikas_j @ hotmail UNIX for Dummies Frågor & Svar 3 02-25-2002 05:41
Sök och ersätt gagansharma Shell-programmering och Skript 3 11-27-2001 04:17

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 Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 05-27-2009
allrise123 allrise123 is offline
Registered User
  
 

Join Date: maj 2009
Inlägg: 9
Sök och ersätt problem

Hej grabbar!

Jag skriver ett manus som jag tar en input från användare och hittar den i en fil och ersätta den.
Min indatafil ser ut

Kod:
hi
what your name?
allrise

Min kod ser ut är

Kod:
echo "Enter the name"
read name
FILE="/opt/name.txt"
NEW_FILE="/opt/new_name.txt"
exec 0<$FILE
    while read line
    do
     if [ -n "`echo ${line} | grep 'allrise'`" ]
     then
              echo ${line} | sed 's|allrise|hello $name|g' >>$NEW_FILE
     else
             echo $line >>$NEW_FILE
     fi
     done <$FILE

När jag kör mitt script, frågar man mig om namn antar jag gav "John" ... men produktionen kommer enligt nedan

Kod:
hi
what your name?
hello $name

så, kan någon förklara hur jag kan få korrekt resultat som bör vara.

Kod:
hi
what your name?
hello john

  #2 (permalänk)  
Old 05-27-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmerare, författare
  
 

Join Date: mars 2007
Ort: Toronto, Kanada
Inlägg: 2.362
Citat:
Ursprungligen postat av allrise123 View Post
Hej grabbar!

Jag skriver ett manus som jag tar en input från användare och hittar den i en fil och ersätta den.
Min indatafil ser ut

Kod:
hi
what your name?
allrise

Min kod ser ut är

Kod:
echo "Enter the name"
read name
FILE="/opt/name.txt"
NEW_FILE="/opt/new_name.txt"
exec 0<$FILE
    while read line
    do
     if [ -n "`echo ${line} | grep 'allrise'`" ]
     then
              echo ${line} | sed 's|allrise|hello $name|g' >>$NEW_FILE

Variabler inte expanderat inom enkla citationstecken; använda citationstecken:


Kod:
echo ${line} | sed "s|allrise|hello $name|g" >>$NEW_FILE

Citat:

Kod:
     else
             echo $line >>$NEW_FILE
     fi
     done <$FILE

När jag kör mitt script, frågar man mig om namn antar jag gav "John" ... men produktionen kommer enligt nedan

Kod:
hi
what your name?
hello $name

så, kan någon förklara hur jag kan få korrekt resultat som bör vara.

Kod:
hi
what your name?
hello john

Vem tror du inte göra:


Kod:
sed "s/allrise/hello $name/" "$FILE" > "$NEWFILE"

Det finns inget behov av en loop.
  #3 (permalänk)  
Old 05-27-2009
allrise123 allrise123 is offline
Registered User
  
 

Join Date: maj 2009
Inlägg: 9
tack för svar ..

Egentligen är detta inte min själva filen ... Detta är bara attrapp fil som jag skapade bara ställa min fråga ... anyways Jag ska försöka ert förslag ..
  #4 (permalänk)  
Old 06-06-2009
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: februari 2007
Location: Innsbruck, Österrike
Inlägg: 1886
Duplikat av Sök och ersätt query

(sock puppet)
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 11:02.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0