The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



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

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 Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 04-10-2008
gstuart gstuart is offline
Registreret Bruger
  
 

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

Join Date: Feb 2007
Indlæg: 4.305
Citat:
Oprindeligt Indsendt af gstuart View Post
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 skulle give den ønskede effekt:

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"
Hilsen
  #3 (permalink)  
Old 04-11-2008
gstuart gstuart is offline
Registreret Bruger
  
 

Join Date: Apr 2008
Stillinger: 16
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 :-)
  #4 (permalink)  
Old 02-06-2009
RickR RickR is offline
Registreret Bruger
  
 

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

Join Date: Jun 2009
Stillinger: 1
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"

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

Join Date: Feb 2005
Beliggenhed: Boston, MA
Indlæg: 5.122
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
Registreret Bruger
  
 

Join Date: May 2009
Stillinger: 9
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..
Reply

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er PÃ¥
Smilies er PÃ¥
[IMG] koden er PÃ¥
HTML-koden er Slukket
Trackbacks er PÃ¥
Pingbacks er PÃ¥
Refbacks er PÃ¥




Alle tidspunkter er GMT -4. Den tid er nu 03:12 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0