![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
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 |
| Perl: Søg efter strengen på linje, så søg og erstat tekst | Crypto | Shell Programmering og Scripting | 4 | 01-04-2008 10:24 AM |
| Behovet for at erstatte alle forekomster af en søgestreng bruge sed | mjs3221 | Shell Programmering og Scripting | 2 | 12-07-2006 02:09 AM |
| String Søg & erstat | IwishIknewC | UNIX for dummyer Spørgsmål & svar | 1 | 03-25-2006 06:28 AM |
| Søg og erstat snor mellem 2 point | whited05 | Shell Programmering og Scripting | 3 | 10-11-2005 02:05 PM |
| string søgning erstatte | Krishna | UNIX for Advanced & Ekspertsøgning Brugere | 1 | 12-19-2001 01:49 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Søg, erstatte strengen i file1 med strengen fra (opslagstabelnavn) fil2?
Hej: Jeg har et andet spørgsmål. Du bør overveje følgende to prøven, tabulatorsepareret filer:
File_1: Abf1 YKL112w Abf1 YAL054c Abf1 YGL234w Ace2 YKL150w Ace2 YNL328c Cup9 YDR441c Cup9 YDR442w Cup9 YEL040w ... Fil 2: ... ABF1 YKL112W ACE2 YLR131C CUP9 YPL177C ... File_2 er en "opslagstabel" Jeg ønsker at erstatte $ 1 i File_1 med matchende 2 $ felt i File_2, desuden tilføje en midterste kolonne, der indeholder strengen "TF", og en kolonne med "dem" ( "1" i den første kolonne stilling), alle tabulatorseparerede. Desuden ville det være ideelt, hvis sagen kunne blive ignoreret, for at søge / erstatte, men at den alfabetiske output være alle store bogstaver [az] omdannes til [az]. FYI, disse er gær gener, ud over tal og bogstaver, nogle af de gener, vil indeholde bindestreger (f.eks YBR162W-A), men ingen vil indeholde komma, komma, mellemrum, etc. Output File_3: 1 YKL112W tf YKL112W 1 YKL112W tf YAL054C 1 YKL112W tf YGL234W 1 YLR131C tf YKL150W 1 YLR131C tf YNL328C 1 YLR131C tf YLR439W 1 YPL177C tf YDR441C 1 YPL177C tf YDR442W 1 YPL177C tf YEL040W ... Dette er relateret til (men forskellige fra) min tidligere forespørgsel, Molekylær biolog kræver hjælpe Re: search / erstatte script Her, den første kolonne er en "dummy" vægt værdi, for at opretholde "felt kompatibilitet," med mine tidligere fil, som vist i dette eksempel: 1 a gi b 1 procentpoint en 1 procentpoint c 1 t gi u 1 t gi w 1 t gi x 1 t pp z 2 procentpoint d 2 procentpoint e 2 t gi v 2 t gi z 3 procentpoint b 3 t gi y ... I sidste ende vil jeg ender med en fil som dette, med $ 1 \u003d vægten, $ 2 \u003d gene1, $ 3 \u003d forening, $ 4 \u003d gene2: 1 YKL112W tf YKL112W 1 YKL112W tf YAL054C 1 YKL112W tf YGL234W 1 YLR131C tf YKL150W 1 YLR131C tf YNL328C 1 YLR131C tf YLR439W 1 YPL177C tf YDR441C 1 YPL177C tf YDR442W 1 YPL177C tf YEL040W ... 1 YBL012C gi YCL045C 1 YBL012C pp YBL012C 5 YBL012C pp YHR039C-A 1 YLR363W-A gi YNL143C 4 YLR363W-A gi YPR123C 1 YLR363W-A gi YLR467W 1 YLR363W-A pp YNR073C 2 YBL012C pp YGL232W 2 YBL012C pp YOR102W 2 YLR363W-A gi YFL066C 2 YLR363W-A gi YNR073C 3 YBL012C pp YCL045C 3 YLR363W-A gi YKL100C ... Tak - igen * meget * meget værdsat! Med venlig hilsen, Greg S. :-) |
|
||||
|
Citat:
Code:
awk '
FNR==NR{a[tolower($1)]=$2;next}
tolower($1) in a{print "1 " a[tolower($1)] " tf " toupper($2)}
' "File_2" "File_1"
|
|
||||
|
Dette er helt fantastisk! ... :-)
Her er min forståelse af Franklin52's kode: Unix Manualer - AWK Reference # \u003d\u003d Er "er lig" tolower (streng): Return strengen med alle de store bogstaver erstattes med deres små bogstaver ækvivalenter. toupper (streng): Return strengen med alle små bogstaver erstattes med deres store bogstaver ækvivalenter. FNR: Optag nummer i input-filen. NR: Antal behandlede registre. Således er det ovenstående script oversætter (? - Du rette mig hvis jeg tager fejl), som awk ' FNR \u003d\u003d NR (a [tolower ($ 1)] \u003d $ 2; næste) mens det rekordhøje antal (linie) er lig med det samlede antal poster (er sandt), har alle de følgende: Få $ 1 (den fælles gen navn - konverteret til små bogstaver - kræves, da det tilsvarende felt i File_1 er små, ellers vil det ikke "passer" - linux er case-sensitive) i lookup fil (File_2), sæt (ændre det ) til (allerede store bogstaver) systematisk gen navn ($ 2) i samme opslagstabel derefter læse den næste post nummer (line); tolower ($ 1) i en (print "1" en [tolower ($ 1)] "TF" toupper ($ 2)) nu, for hver $ 1 i File_2 (nu indstillet til store bogstaver $ 2, fra den opslagstabel), i den anden fil (File_1, den ene, der skal omregnes), udskrive "1", $ 2 fra File_2 "TF", $ 2 fra File_1 (returneres som store bogstaver, at konvertere den efterfølgende lille c, w,-en, osv.) ' "File_2" "File_1" File_1 \u003d fil, der skal behandles (omregnet) File_2 \u003d "lookup file" ( "common_to_systematic.tab) ?! Dette fungerer glimrende! Thank you so much, Franklin52! Hav en super weekend! ... Greg :-) |
|
||||
|
Omdøbe flere filer fra en opslagstabel
Er det muligt at ændre ovenstående script til at omdøbe filer baseret på en opslagstabel?
f.eks: Nuværende New A87324.jpg A1372365.jpg A89732.jpg A98274.jpg A130347.jpg A73689.jpg ... Tak, Rick |
|
||||
|
Citat:
Jeg forsøger at ændre koden ovenfor for en lignende situation. Jeg har to input filer. Den første fil (Datastores) er en CSV med venlige navne i den første kolonne og UUID'er i den anden kolonne. Den anden fil (FOS) er en liste af filer med den fulde sti ved hjælp af UUID. For eksempel: ----- Datastores.csv ----- venlige navn 1, UUID1 venlige navn 2, UUID2 venlige navn 3, UUID3 etc ----- Datastores.csv ----- ----- VMs.txt ----- / folder/UUID3/vm1.vmx / folder/UUID2/vm2.vmx / folder/UUID1/vm3.vmx / folder/UUID3/vm4.vmx etc ----- VMs.txt ----- Hvad jeg leder efter, er output, som ser sådan her ud: ----- Output.txt ----- / mappe / venlige navn 3/vm1.vmx / mappe / venlige navn 2/vm2.vmx / mappe / venlige navn 1/vm3.vmx / mappe / venlige navn 3/vm4.vmx etc ----- Output.txt ----- Prøven awk er ikke intuitiv for mig, selv efter at have læst den anden forklaring, og går over O'Rielly lomme reference. Det drejer sig om input behøver ikke at blive ændret - hvis der er et problem med sagen matchende da jeg har andre problemer at beskæftige sig med. Tak for din hjælp på forhånd. |
|
||||
|
Hi guys!
Jeg er ny på shell script .. Jeg ønskede at vide abt sed kommando, og hvordan det arbejde? her er hvad jeg vil gøre, jeg vil søge originale streng i export.txt fil, der er: eksport mibs \u003d \ "opt \ mymibs \ Jeg ønsker at erstatte det med eksport mibs \u003d \ "opt \ new_mibs \ Please hjælp med det thanks in advance Senest redigeret af allrise123; 05-23-2009 kl 04:17 PM.. |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|