temp; mv temp $ y; göra och det fungerade bra för att hitta och ersätta strängar med namn osv alla" />
![]() |
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 |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
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 |
|
||||
|
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. |
|
||||
|
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";) |