temp; mv temp $ y; göra och det fungerade bra för att hitta och ersätta strängar med namn osv alla" /> shell script för att hitta och ersätta strängen i flera filer - Unix och Linux Forums
The UNIX and Linux Forums  
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.

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 sträng i en katalog filer koti_rama Shell-programmering och Skript 2 05-30-2008 03:48
Sök och ersätt ett snöre i flera filer pharos467 UNIX for Dummies Frågor & Svar 2 11-05-2007 11:47
Sök och ersätt i flera filer (Shell script) jatins_s Shell-programmering och Skript 13 11-05-2007 02:11
Sök och ersätt filer i olika mappar lodey Shell-programmering och Skript 6 09-28-2007 02:00
hitta och FTP flera filer i Korn Shell lambjam UNIX for Dummies Frågor & Svar 2 08-13-2007 10:50

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 11-05-2007
pharos467 pharos467 is offline
Registered User
  
 

Join Date: Nov 2007
Inlägg: 24
shell script för att hitta och ersätta strängen i flera filer

Jag använde följande skript


cd sökväg
för y i `ls *";
göra sed "s / ABCD / DCBA / g" $ y> temp, mv temp $ y;
gjord



och det fungerade bra för att hitta och ersätta strängar med namn osv på alla filer i angiven sökväg.

Jag försöker byta ut en sträng som består av sökvägen (placering fil)

säga i stället för ABCD jag måste ersätta c: / mydocuments / bilder till
d: / mypics / personligt, som metatecken brukar sökas i UNIX skriptet har inte ersätta den sträng som har en väg i det.

nu mitt manus är


cd sökväg
för y i `ls *";
göra sed "s / 'C: / MyDocuments / bilder' / 'd: / mypics / personliga' / g" $ y> temp; mv temp $ Y;
gjord





Jag trött ger sökvägen i enstaka citat och citationstecken, men jag ser fel

sed: Kommando förvrängd: s / 'C: / MyDocuments / bilder' / 'd: / mypics / personliga' / g


Och allt innehåll i filer i sökvägen raderas.


Också försökt följande hjälp sed --


sed -e "s! AAA BBB! g"
sed \u003d e "s + AAA + BBB + g"

som strängen har / i filen sökvägen

Finns det något annat sätt att arbeta här.

Tack
  #2 (permalänk)  
Old 11-05-2007
aigles's Avatar
aigles aigles is online now Forum Advisor  
Registered User
  
 

Join Date: april 2004
Ort: Bordeaux, Frankrike
Inlägg: 1.423
Försöka
Kod:
cd pathname
for y in `ls *`;
do 
   sed 's_c:/mydocuments/pictures_d:/mypics/personal_' $y > temp; mv temp $y;
done
Jean-Pierre.

Senast redigerad av aigles; 11-05-2007 vid 03:42.. Orsak: sed kommando korrigering
  #3 (permalänk)  
Old 11-05-2007
pharos467 pharos467 is offline
Registered User
  
 

Join Date: Nov 2007
Inlägg: 24
trött

nedan script sände fel

sed: Kommando förvrängda:
  #4 (permalänk)  
Old 11-05-2007
aigles's Avatar
aigles aigles is online now Forum Advisor  
Registered User
  
 

Join Date: april 2004
Ort: Bordeaux, Frankrike
Inlägg: 1.423
Det var en felaktig / i sed kommandot.
Föregående post ändras.

Jean-Pierre.
  #5 (permalänk)  
Old 11-05-2007
gus2000 gus2000 is offline
Registered User
  
 

Join Date: oktober 2007
Inlägg: 157
Apostrof bli vanliga bokstäver när innanför dubbla citattecken. Så du kan göra detta:

echo "that's OK"

och detta är inte ett fel eller öppen-citat. Så sätter enkla apostrofer inuti börsnoterat sed-uttryck är OK, men är inte citera texten mellan dem.

Koden ovan av Jean-Pierre ser OK för mig.
  #6 (permalänk)  
Old 11-06-2007
pharos467 pharos467 is offline
Registered User
  
 

Join Date: Nov 2007
Inlägg: 24
Now it works, en av _ saknas i min sed kommandot.

2 Tack alla som svarade
  #7 (permalänk)  
Old 01-15-2009
wlcm232 wlcm232 is offline
Registered User
  
 

Join Date: Jan 2009
Inlägg: 2
Sök och ersätt kodning i Perl

#! / usr / bin /perl
# bash #. / ff.pl - Prod \ / opt \ / WebSphere5 - cob \ / opt \ / was6mig \ / WebSphere5-base

använd Arkiv:: Sök;
användning Getopt:: Long;
# $ dmPath \u003d "/ scratch / optcob / cells.dmgr.tmp";
# Ändra Basepath med nya kopierade WAS5 kopieras plats.
$ Basepath \u003d "/ opt/IBM/WAS6.1/IBMIHS/CI_CNV_CRD_HTTPServer";
$ dmPath \u003d "/ DM5"; # Oroa dig inte om detta $ Basepath \u003d "/ app/WebSphere6/profiles";
$ tmpf \u003d "/ tmp / tmpf";
sub ModFileByRegex (
my ($ tok, $ repl, $ fpat, $ path) \u003d (@_);
my $ cnt \u003d 0;
sub fwanted (
-f & &
$ File:: Sök:: name \u003d ~ / $ fpat / & & do (
open (INF, $ File:: Sök: namn) | | die "Cannot open $ File:: Sök:: Namn: $!";
open (TMPF, "> $ tmpf") | | die "Kan inte öppna $ tmpf för skrivning: $!";
my @ input \u003d <INF>;
my $ förändring \u003d grep (s / $ tok / $ repl / g) @ input;
if ($ ändra> 0) (
nära INF;
print TMPF @ input;
nära TMPF;
print "uppdatera / spara kopia av $ File:: Sök:: name \ n";
döpa $ File:: Sök: namn, $ File:: Sök: namn. ". org";
print "cp-p $ tmpf $ File:: Sök:: name \ n`;
$ cnt + +;
)
)
)
print "söka från $ Path för $ tok i filer som heter $ fpat \ n";
find (\ & fwanted, $ path);
return ($ cnt);
)
sub findDirByRegex (
my ($ tok, $ repl, $ path) \u003d (@_);
my $ cnt \u003d 0;
sub ville (
-d & &
$ File:: Sök:: name \u003d ~ / $ tok [\ w \ .]*?$/ & &
push @ DIRL, $ File:: Sök:: name;
)
print "Looking for kataloger från $ Path kallade $ tok \ n";
find (\ & ville, $ path);
while ($ _ \u003d pop @ DIRL) (
$ src \u003d $ _;
s / $ tok ([\ w \ .]*)?$/$ repl $ 1 /;
print "byta namn $ src, $ _ \ n";
byta namn $ src, $ _ | | varna "kunde inte byta namn på sista filen, please check";
$ cnt + +;
)
return ($ cnt);
)
% optctl \u003d ();
GetOptions (\% optctl, "prod \u003d s", "majskolv \u003d s", "dmgr", "bas");
print "som alternativ: \ n \ n";
print "prod system (källa system):". $ optctl ( "prod"). "\ n";; print "cob (TARGET-systemet):". $ optctl ( "COB"). "\ n", print "Do Deployment Manager \ n" if ($ optctl ( "dmgr") \u003d\u003d 1); print "Do Base WebSphere \ n" if ($ optctl ( "bas") \u003d\u003d 1);
print "\ n \ n";
if ($ optctl ( "dmgr") \u003d\u003d 1) (
print "uppdatering Deployment Manager XML-filer \ n";
$ cnt \u003d ModFileByRegex ($ optctl ( "produkter"), $ optctl ( "COB"), ".*", $ dmPath);
print "$ cnt XML-filer som har uppdaterats \ n";)
if ($ optctl ( "bas") \u003d\u003d 1) (
print "uppdatering WebSphere Base XML-filer \ n";
$ cnt \u003d ModFileByRegex ($ optctl ( "produkter"), $ optctl ( "COB"), ".*", $ Basepath);
print "$ cnt XML-filer som har uppdaterats \ n";)
if ($ optctl ( "dmgr") \u003d\u003d 1) (
print "uppdatering Deployment Manager bas katalognamn \ n";
$ cnt \u003d findDirByRegex ($ optctl ( "produkter"), $ optctl ( "COB"), $ dmPath);
print "$ cnt katalognamn uppdaterad \ n";)
if ($ optctl ( "bas") \u003d\u003d 1) (
print "uppdatering WebSphere bas katalognamn \ n";
$ cnt \u003d findDirByRegex ($ optctl ( "produkter"), $ optctl ( "COB"), $ Basepath);
print "$ cnt katalognamn uppdaterad \ n";)
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 10:39.


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