temp; mv temp $ y; gjort og det fungerede fint til at finde og erstatte snore med navne osv. i alle" />
![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| finde og erstatte strengen i en mappe filer | koti_rama | Shell Programmering og Scripting | 2 | 05-30-2008 04:48 AM |
| Find og erstatte en snor i flere filer | pharos467 | UNIX for dummyer Spørgsmål & svar | 2 | 11-05-2007 11:47 PM |
| Søg og erstat i flere filer (Shell script) | jatins_s | Shell Programmering og Scripting | 13 | 11-05-2007 02:11 PM |
| Find og erstatte filer i flere mapper | lodey | Shell Programmering og Scripting | 6 | 09-28-2007 03:00 AM |
| finde og FTP flere filer i Korn Shell | lambjam | UNIX for dummyer Spørgsmål & svar | 2 | 08-13-2007 11:50 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
shell script til at finde og erstatte strengen i flere filer
Jeg brugte følgende script
CD stinavn for y i `ls *`; gøre sed "s / ABCD / DCBA / g" $ y> temp; MV temp $ y; gjort og det virkede fint til at finde og erstatte snore med navne osv. i alle filer i den angivne sti. Jeg forsøger at erstatte en streng, der består af sti (placering af filen) sige i stedet for ABCD jeg nødt til at erstatte c: / mydocuments / billeder til d: / mypics / personlig, som metategn plejer skal søges i UNIX dette script er ikke at erstatte strengen, som har en sti i det. nu er mit script CD stinavn for y i `ls *`; gøre sed "s / 'c: / mydocuments / billeder' / 'D: / mypics / personlig' / g" $ y> temp; mv temp $ y; gjort Jeg træt give stien i enkelt citationstegn og dobbelte anførselstegn, men jeg se fejl sed: Kommando forvansket: s / 'c: / mydocuments / billeder' / 'D: / mypics / personlig' / g Og hele indholdet af filerne i stien slettes. Også forsøgt følgende hjælp sed -- sed -e "s! AAA! BBB! g" sed \u003d e "s + AAA + BBB + g" som strengen har / i filplacering sti Er der nogen anden måde at arbejde på det. Tak |
|
||||
|
Enkelt anførselstegn bliver almindelige tegn, når inde dobbelte anførselstegn. Så du kan gøre dette:
echo "that's OK" og dette er ikke en fejl eller åben-tilbud. Så sætter enkelt-anførselstegn inde i et børsnoteret sed-udtryk er OK, men er ikke citere teksten mellem dem. Ovenstående kode af Jean-Pierre ser OK ud for mig. |
|
||||
|
finde og erstatte kodning i perl
#! / usr / bin /perl
# bash #. / ff.pl - prod \ / opt \ / WebSphere5 - cob \ / opt \ / was6mig \ / WebSphere5-base bruge File:: Find; brug Getopt:: Long; # $ dmPath \u003d "/ scratch / optcob / cells.dmgr.tmp"; # Rediger Basepath med nye kopieres WAS5 kopieres placering. $ basePath \u003d "/ opt/IBM/WAS6.1/IBMIHS/CI_CNV_CRD_HTTPServer"; $ dmPath \u003d "/ DM5"; # ikke bekymre dig om dette $ 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øg:: name \u003d ~ / $ fpat / & & do ( åben (INF, $ File:: Søg:: name) | | die "kan ikke åbne $ File:: Søg:: Navn: $!"; open (TMPF, "> $ tmpf") | | die "kan ikke åbne $ tmpf for at skrive: $!"; my @ input \u003d <INF>; my $ change \u003d grep (s / $ tok / $ repl / g) @ input; if ($ ændre> 0) ( tæt INF; print TMPF @ input; tæt TMPF; print "ajourføring / gemme kopi af $ File:: Søg:: name \ n"; omdøbe $ File:: Søg:: navn, $ File:: Søg:: name. ". org"; print `cp-p $ tmpf $ File:: Søg:: \ n`; $ cnt + +; ) ) ) print "søger fra $ Sti for $ tok i filer, der kaldes $ fpat \ n"; find (\ & fwanted, $ path); return ($ cnt); ) sub findDirByRegex ( my ($ TOK, $ repl, $ path) \u003d (@_); my $ cnt \u003d 0; sub ønskede ( -D & & $ File:: Søg:: name \u003d ~ / $ tok [\ w \ .]*?$/ & & push @ DIRL, $ File:: Søg:: name; ) print "Looking for mapper fra $ sti kaldet $ tok \ n"; find (\ & ønskede, $ path); while ($ _ \u003d pop @ DIRL) ( $ src \u003d $ _; s / $ tok ([\ w \ .]*)?$/$ repl $ 1 /; print "omdøbe $ src, $ _ \ n"; omdøbe $ src, $ _ | | advare "Kunne ikke omdøbe sidste fil, kan du tjekke"; $ cnt + +; ) return ($ cnt); ) % optctl \u003d (); GetOptions (\% optctl, "prod \u003d s", "cob \u003d s", "dmgr", "base"); print "sæt valgmuligheder: \ n \ n"; print "prod-system (kilde system):". $ optctl ( "prod"). "\ n";; print "majskolbe system (Target):". $ optctl ( "majskolbe"). "\ n"; print "Do Deployment Manager \ n" if ($ optctl ( "dmgr") \u003d\u003d 1); print "Do Base WebSphere \ n" if ($ optctl ( "base") \u003d\u003d 1); print "\ n \ n"; if ($ optctl ( "dmgr") \u003d\u003d 1) ( print "ajourføring Deployment Manager XML-filer \ n"; $ cnt \u003d ModFileByRegex ($ optctl ( "prod"), $ optctl ( "majskolbe"), ".*", $ dmPath); print "$ cnt XML-filer blev opdateret \ n";) if ($ optctl ( "base") \u003d\u003d 1) ( print "ajourføring WebSphere Base XML-filer \ n"; $ cnt \u003d ModFileByRegex ($ optctl ( "prod"), $ optctl ( "majskolbe"), ".*", $ basePath); print "$ cnt XML-filer blev opdateret \ n";) if ($ optctl ( "dmgr") \u003d\u003d 1) ( print "ajourføring Deployment Manager base mappenavne \ n"; $ cnt \u003d findDirByRegex ($ optctl ( "prod"), $ optctl ( "majskolbe"), $ dmPath); print "$ cnt mappenavne opdateret \ n";) if ($ optctl ( "base") \u003d\u003d 1) ( print "ajourføring WebSphere base mappenavne \ n"; $ cnt \u003d findDirByRegex ($ optctl ( "prod"), $ optctl ( "majskolbe"), $ basePath); print "$ cnt mappenavne opdateret \ n";) |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|