& 1 | tee abc.sh Jag vill hitta 192.168.1.4 och ersätta det med " />
![]() |
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
| Mönstermatchning problem i Perl-skript | ganapati | Shell-programmering och Skript | 11 | 10-15-2008 03:17 |
| Mönstermatchning problem i UNIX | maxmave | Shell-programmering och Skript | 2 | 06-03-2008 01:19 |
| mönstermatchning problem | namishtiwari | Shell-programmering och Skript | 2 | 05-23-2008 07:33 |
| Problemet med CASE mönstermatchning | gummysweets | Shell-programmering och Skript | 2 | 03-18-2008 11:30 |
| mönstermatchning problem | tyglar | Shell-programmering och Skript | 8 | 10-26-2007 11:44 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
#1 (permalänk)
|
||||
|
||||
|
problemet med hjälp av sed för mönstermatchning
om abc.sh är
192.168.1.41 sedan produktionen att jag är v5c01 min kod sed "s/192.168.1.4/v5c0/g s/192.168.1.41/acc1/g "abc.sh 2> & 1 | tee abc.sh Jag vill hitta 192.168.1.4 och ersätta det med v5c0 och hitta 192.168.1.41 och ersätta det med acc1 och jag vill göra det med hjälp av sed |
|
#2 (permalänk)
|
|||||
|
|||||
|
Nästan det:
Kod:
rm abc.sh.$$ 2>/dev/null sed -e 's/192.168.1.4/v5c0/g' -e 's/192.168.1.41/acc1/g' abc.sh > abc.sh.$$ && \ cp abc.sh.$$ abc.sh && \ rm abc.sh.$$ |
|
#3 (permalänk)
|
||||
|
||||
|
sed 's / "^ 192.168.1.4 $' / v5c0 / g
s/192.168.1.41/acc1/g "abc.sh 2> & 1 | tee abc.sh det fungerar med denna |
|
#4 (permalänk)
|
||||
|
||||
|
Kan du förklara vad din kod gör .. gruvan verkade fungera i går men jag ser samma problem med det i dag igen
|
|
#5 (permalänk)
|
|||||
|
|||||
|
Skriptet tar bort den temporära filen vi ska använda, så att den inte är en symbolisk länk pekar på andra platser, de sed linje innebär:
för varje rad i abc.sh den letar efter 192.168.1.4 och ersätter det med v5c0 dock många gånger 192.168.1.4 sker i varje rad, utan "g" bara den första förekomsten på varje rad skulle få ersättas, och: sed ser till 192.168.1.41 och ersätter och ersätter det med acc1 dock många gånger det upprepas i varje rad, Produktionen från sed tas i en temporär fil eftersom normala textbehandling kommandon kan inte skriva till filen de läser från utan förvränger dem, tillfälligt filnamn abc.sh. med PID i skriptet läggas på slutet för att göra det unika med ">" betyder att om abc.sh. $ $ redan det kommer att komma över, om sed inte misslyckas (i & & test) sedan nästa kommandot körs som att kopiera den temporära filen tillbaka till den ursprungliga, kopiera den temporära filen i stället flytta den bevarar tillstånd för abc.sh, om kopian är framgångsrik, då den tillfälliga raderas. |
|
#6 (permalänk)
|
||||
|
||||
|
Tack för utförlig förklaring
|