![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Perl: Zoek een string op de lijn vervolgens zoek en vervang tekst | Crypto | Programmeren en Shell Scripting | 4 | 01-04-2008 10:24 |
| Noodzaak om alle gebeurtenissen van een zoekopdracht met behulp van sed | mjs3221 | Programmeren en Shell Scripting | 2 | 12-07-2006 02:09 |
| String Zoeken en vervangen | IwishIknewC | UNIX voor Dummies Questions & Answers | 1 | 03-25-2006 06:28 |
| Zoeken en vervangen string tussen 2 punten | whited05 | Programmeren en Shell Scripting | 3 | 10-11-2005 03:05 PM |
| string zoekopdracht vervangen | krishna | UNIX for Advanced & Expert Gebruikers | 1 | 12-19-2001 01:49 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Zoeken, vervangen string in bestand1 met string uit (opzoektabel) bestand2?
Hallo: Ik heb een andere vraag. Houd rekening met de volgende twee monster, tab-gescheiden bestanden:
File_1: Abf1 YKL112w Abf1 YAL054c Abf1 YGL234w ACE2 YKL150w ACE2 YNL328c Cup9 YDR441c Cup9 YDR442w Cup9 YEL040w ... Bestand 2: ... ABF1 YKL112W ACE2 YLR131C CUP9 YPL177C ... File_2 is een "opzoektabel," ik wil 1 dollar te vervangen in File_1 met de bijpassende 2 dollar veld in File_2 daarnaast de toevoeging van een middelste kolom bevat de string "TF", en een kolom van "Ones" ( "1" in de eerste kolom positie), alle tab-gescheiden. Daarnaast zou het ideaal zijn als de zaak kon worden genegeerd voor het zoeken / vervangen, maar dat de alfabetische uitgang worden alle hoofdletters [az] omgezet naar [AZ]. FYI, dit zijn gist genen; naast cijfers en letters, een aantal van de genen zal streepjes bevatten (bijv. YBR162W-A), maar niemand zal bevatten komma's, puntkomma's, spaties, etc. Output File_3: 1 tf YKL112W YKL112W 1 tf YKL112W YAL054C 1 tf YKL112W YGL234W 1 tf YLR131C YKL150W 1 tf YLR131C YNL328C 1 tf YLR131C YLR439W 1 tf YPL177C YDR441C 1 tf YPL177C YDR442W 1 tf YPL177C YEL040W ... Dit is gerelateerd aan (maar anders) mijn eerdere vraag, Moleculair bioloog vereist helpen re: zoek / vervang script Hier de eerste kolom is een "dummy" gewicht waarde, "veld compatibiliteit," met mijn eerdere bestand, onderhouden zoals in dit voorbeeld: 1 a gi b 1 a pp per 1 a pp c 1 t gi u 1 t gi w 1 t gi x 1 t pp Z 2 a pp d 2 a pp e 2 t gi v 2 t gi z 3 a b pp 3 t gi y ... Uiteindelijk zal ik eindigen met een bestand als deze, met $ 1 \u003d gewicht, $ 2 \u003d gene1, $ 3 \u003d vereniging, $ 4 \u003d gene2: 1 tf YKL112W YKL112W 1 tf YKL112W YAL054C 1 tf YKL112W YGL234W 1 tf YLR131C YKL150W 1 tf YLR131C YNL328C 1 tf YLR131C YLR439W 1 tf YPL177C YDR441C 1 tf YPL177C YDR442W 1 tf YPL177C YEL040W ... 1 YBL012C gi YCL045C 1 pp YBL012C 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 pp YBL012C YGL232W 2 pp YBL012C YOR102W 2 YLR363W-A gi YFL066C 2 YLR363W-A gi YNR073C 3 pp YBL012C YCL045C 3 YLR363W-A gi YKL100C ... Dank u - nogmaals, * erg * zeer gewaardeerd! Met vriendelijke groet, Greg S. :-) |
|
||||
|
Citaat:
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"
Groeten |
|
||||
|
Dit is absoluut geweldig! ... :-)
Hier is mijn begrip van de code Franklin52's: Unix Handleidingen - AWK Referentie # \u003d\u003d Is "is gelijk" tolower (string): Toon de string met alle hoofdletters vervangen door hun kleine equivalenten. toupper (string): Toon de string met alle kleine letters vervangen door hun hoofdletters equivalenten. FNR: Record aantal in input file. NR: Aantal behandelde dossiers. Zo is de bovenstaande script vertaalt (? - Corrigeer me als ik mij niet vergis) als awk ' FNR \u003d\u003d NR (a [tolower ($ 1)] \u003d $ 2;) volgende terwijl het record aantal (lijn) het totale aantal records gelijk (is waar), doen al het volgende: krijgt $ 1 (de gemeenschappelijke gen naam - omgezet naar kleine letters - nodig omdat het overeenkomstige veld in kleine letters File_1 is, anders zal het niet aan "match" - Linux is hoofdlettergevoelig) in de lookup bestand (File_2), set (veranderen ) aan de (reeds hoofdletters) systematische gen naam ($ 2) in dezelfde opzoektabel, lees dan het volgende record aantal (lijn); tolower ($ 1) in een (print "1" een [tolower ($ 1)] "TF" toupper ($ 2)) nu (voor elke $ 1 in File_2 nu ingesteld op hoofdletters $ 2, van de opzoektabel), in het tweede bestand (File_1, de ene om te rekenen), print "1", $ 2 van File_2; "TF", $ 2 van File_1 (geretourneerd als hoofdletters, kleine letters aan de afsluitende c, w converteren,-a, enz.) "File_2" "File_1" File_1 \u003d bestand te worden verwerkt (omgerekend) File_2 \u003d "lookup file" ( "common_to_systematic.tab) ?! Dit werkt briljant! Thank you so much, Franklin52! Heb een super weekend! ... Greg :-) |
|
||||
|
Hernoemen van meerdere bestanden uit een opzoektabel
Is het mogelijk om het bovenstaande script om bestanden te wijzigen op basis van een opzoektabel hernoemen?
bv: Huidige Nieuw A87324.jpg A1372365.jpg A89732.jpg A98274.jpg A130347.jpg A73689.jpg ... Bedankt, Rick |
|
||||
|
Citaat:
Ik probeer om de bovenstaande code voor een soortgelijke situatie. Ik heb twee invoerbestanden. Het eerste bestand (gegevensarchieven) is een CSV met vriendelijke namen in de eerste kolom en UUIDs in de tweede kolom. Het tweede bestand (VMS) is een lijst met bestanden met het volledige pad met behulp van de UUID. Bijvoorbeeld: ----- Datastores.csv ----- naam 1, UUID1 naam 2, UUID2 naam 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 ----- Wat ik zoek is de output die er als volgt uitziet: ----- Output.txt ----- / map / naam 3/vm1.vmx / map / naam 2/vm2.vmx / map / naam 1/vm3.vmx / map / naam 3/vm4.vmx etc ----- Output.txt ----- Het monster awk is niet intuïtief voor mij, zelfs na het lezen van de andere uitleg en gaan over de O'Rielly zak referentie. Het geval van een inbreng hoeft niet te worden veranderd - als er een probleem is met bijpassende geval dan heb ik andere kwesties te behandelen. Bedankt voor uw hulp op voorhand. |
|
||||
|
hi guys!
Ik ben nieuw bij shell script .. Ik wilde weten ABT sed commando en hoe het werkt? hier is wat ik wil doen, ik wil naar het originele string in export.txt bestand zoeken die: export mibs \u003d \ opt \ mymibs \ Ik wil dit te vervangen door export mibs \u003d \ opt \ new_mibs \ Help mee Thanks in advance Laatst bewerkt door allrise123; op 05.23.2009 05:17 PM.. |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|