The UNIX and Linux Forums  

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



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

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 04-10-2008
gstuart gstuart is offline
Geregistreerde gebruiker
  
 

Join Date: april 2008
Posts: 16
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. :-)
  #2 (permalink)  
Old 04-11-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Berichten: 4.342
Citaat:
Oorspronkelijk geplaatst door gstuart View Post
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 moet de gewenste output:


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
  #3 (permalink)  
Old 04-11-2008
gstuart gstuart is offline
Geregistreerde gebruiker
  
 

Join Date: april 2008
Posts: 16
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 :-)
  #4 (permalink)  
Old 02-06-2009
RickR RickR is offline
Geregistreerde gebruiker
  
 

Join Date: Feb 2009
Krabbels: 1
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
  #5 (permalink)  
Old 06-07-2009
aenagy aenagy is offline
Geregistreerde gebruiker
  
 

Join Date: juni 2009
Krabbels: 1
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"

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.
  #6 (permalink)  
Old 02-06-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Locatie: Boston, MA
Berichten: 5.131

Code:
#!/bin/ksh

while read current new x
do
   mv "${current}" "${new}"
done < /path/to/lookupFile

  #7 (permalink)  
Old 05-23-2009
allrise123 allrise123 is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Posten: 9
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..
Reply

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 06:45 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0