The UNIX and Linux Forums  

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
Indsæt kommandokæden ikke bringe mit output jplayermx Shell Programmering og Scripting 4 09-05-2008 03:03 PM
Juster tekst fra en fil. earlepps UNIX for dummyer Spørgsmål & svar 9 08-01-2006 09:37 AM
tilslutter flere områder og fylde rum med nul DebianJ Shell Programmering og Scripting 2 11-23-2005 07:51 AM
hvordan du tilslutter rapport overskrifter i awk galinaqt Shell Programmering og Scripting 3 10-16-2005 04:41 PM
Sådan understrege / fed og hvordan man kan tilpasse produktionen Clara UNIX for dummyer Spørgsmål & svar 1 06-16-2005 01:41 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 05-27-2009
chowdhut chowdhut is offline
Registreret Bruger
  
 

Join Date: May 2009
Beliggenhed: CT, USA
Stillinger: 4
Til Juster kliniske data filer ved hjælp awk

Hej, jeg er ny i shell-scripts og 1. uge i awk. Jeg har indtil videre formået at formatere output-filer til prøve Fil 1 og Fil 2 som vist nedenfor og Fil 3 output løsning er, hvad jeg leder efter ... tak

Fil 1:
0633-009_001200008: 225065338468009: CMBRTRM: Albuterol
0633-009_001200008: 225065338468009: CMCLAS1: åndedrætsorganerne
0633-009_001200008: 225065338468009: CMCLAS2: lægemidler til obstruktive
0633-009_001200008: 225065338468009: CMCLAS3: adrenergica
0633-009_001200009: 225065338468008: CMBRTRM: Albuterol
0633-009_001200009: 225065338468008: CMCLAS1: åndedrætsorganerne
0633-009_001200009: 225065338468008: CMCLAS2: lægemidler til obstruktive
0633-009_001200009: 225065338468008: CMCLSCD3: R03C
Fil 2:
USUBJID | CMSEQ | CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE |
0633-009_001200008 | 225065338468009
0633-009_001200009 | 225065338468008

Need Uddatafilens 3 med Betingelser:
File 1's Field 4 værdier (seprated med ":" for eksempel Albuterol) føjer til fil 2 af
Felt 3 værdi af File 1 (for eksempel CMBRTM) lig File 2 header separeted af | (for eksempel | CMBRTM |) og
for, at rækken af Indsæt fil 2's felt 1 og felt 2-værdier er lig med File 1's område 1 og 2-værdier


Out sætte File 3:
USUBJID | CMSEQ | CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE |
633-009_001200008 | 225065338468009 | Albuterol | respiratorysystem | lægemidler til obstruktive | adrenergica |||||
0633-009_001200009 | 225065338468008 | Albuterol | åndedrætsorganerne | lægemidler til obstruktive | | | | R03C | |
  #2 (permalink)  
Old 05-27-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Sep 2006
Stillinger: 2558
så hvad har du med awk?
  #3 (permalink)  
Old 05-28-2009
chowdhut chowdhut is offline
Registreret Bruger
  
 

Join Date: May 2009
Beliggenhed: CT, USA
Stillinger: 4
SÃ¥ langt i min ydmyge arbejde .....


Code:
# For File 2, 1st I tried to create unique values from File 1's column 3
# and transpose those values as headers for File 2

awk -F":" '{print $3}' File1.txt | sort | uniq > tst.txt


# for each row of distinct 3rd column values of File 1 , create a file with column headers ( for now hard code first two columns USUBJID and CMSEQ) 


awk -F "/n" '
BEGIN {OFS= "|"}

{
for (i=1;i<=NF;i++)
 {arr[NR,i]=$i;}
}

END {
     printf("USUBJID|CMSEQ|");
     for(i=1;i<=NF;i++)
      {
      for(j=1;j<=NR;j++)
        {printf("%s|",arr[j,i]);}
        printf("\n");
      }
     }' tst.txt > temp1.txt

cp temp1.txt File2.txt




# each 1st and 2nd record in File1.txt file , needs to create a distinct row in File2.txt for 1st and 2nd columns usubjid|cmseq combo

awk -F':' '
   {
        SEQ[$1,"|",$2] = SEQ[$1,"|",$2];
       
   }
   END {

   
          for (i in SEQ)
           
              print i;
          
                           
       }' File1.txt >> File2.txt


Nu ved jeg mine kolonner i Fil 2, jeg kender min antallet af rækker i Fil 2 fra Fil 1,
Jeg har brug for at behandle Cloumn 4 fra Fil 1 og indsæt i Fil 2, tænkning ->

Jeg har brug for en måde at danne en snor for hver værdier i kolonne 4 i File 1 seprated af '|' og
at strengen vil tilføje for hver linje i Fil 2 baseret på:

Behov for at finde ud for hver unikke kolonne 1 og kolonne 2 kombination i File 1
, Jeg har brug for at vælge den kolonne 4 værdier og tilføje siden af den relevante række i Fil 2
og når jeg gør så strengværdier med kolonne 4 i kolonne 3 i File 1 behøver at matche header rækkefølge File 2


håber jeg ikke gør min forklaring kompliceret :-(

Senest redigeret af chowdhut; 05-28-2009 kl 04:22 PM..
  #4 (permalink)  
Old 06-18-2009
chowdhut chowdhut is offline
Registreret Bruger
  
 

Join Date: May 2009
Beliggenhed: CT, USA
Stillinger: 4
Jeg gjort fremskridt, og i denne fase I har brug for hjælp til at finde ud af, hvorfor en ydre for-løkke KSH variabel ikke afkode i AWK men indvendig for-løkke gør. Nedenfor er min kode,
Hvis jeg hårdt kode variabel 'SUBSEQ' i AWK det virker, men hvis jeg forsøger at passere SUBSEQ fra KSH, er det ikke, og når jeg passerer variablen 'Nam' fra KSH virker det: Jeg har hele filen nedenfor. Jeg har brug for hjælp, så koden giver output, hvis jeg afkommentere linjen
# SUBSEQ \u003d " '$ sub'", og udkommentere de papirkopi
SUBSEQ \u003d "0633-009_001200008 | 225065338468009";

Ikke efter, hvorfor hvis blokken ikke vurderer, SUBSEQ if (arr [j, 1] \u003d\u003d SUBSEQ & & & & arr [j, 2] \u003d\u003d NAM)

#! / bin / ksh


# Læse emne og sekvens
sæt-A subseq_array $ (<subseq.txt)


# Læse den gældende QVALS Bestil for undersøgelsen (kan være fra definere)

sæt-A qnam_array $ (<qnam.txt)


for sub i $ (subseq_array [@])
gøre
for n i $ (qnam_array [@])
gøre

# print $ sub;

`awk-F ':' BEGIN ()
(

(
# SUBSEQ \u003d " '$ sub'";
SUBSEQ \u003d "0633-009_001200008 | 225065338468009";
NAM \u003d " '$ n'";
NULL \u003d "|";
)



for (i \u003d 1; i <\u003d NF; i + +)
(
arr. [NR, i] \u003d $ i;
)
)

SLUT (


for (j \u003d 1; j <\u003d NR; j + +)
(

if (arr [j, 1] \u003d\u003d SUBSEQ & & arr [j, 2] \u003d\u003d NAM) (
(printf ( "% s |", arr. [j, 3]);)
exit;)
)



for (j \u003d 1; j <\u003d NR; j + +)
(


if (arr [j, 1] \u003d\u003d SUBSEQ & & arr [j, 2]! \u003d NAM) (
(printf ( "% s", NULL);)
exit;)

)






) 'Supp_q.txt>> out1.txt `

gjort
print $ sub>> out1.txt
break;
gjort



Filerne:
subseq.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d

0633-009_001200008 | 225065338468009
0633-009_001200008 | 225065338468010
0633-009_001200009 | 225065338468008
0633-009_001200018 | 225065338468009
0633-009_001200018 | 225065338468011

qnam.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d

CMBRTRM
CMCLAS1
CMCLAS2
CMCLAS3
CMCLSCD1
CMCLSCD2
CMCLSCD3
CMROUTE

kildefil, at jeg læser fra
supp_q.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d

0633-009_001200008 | 225065338468009: CMBRTRM: Albuterol
0633-009_001200008 | 225065338468009: CMCLAS1: åndedrætsorganerne
0633-009_001200008 | 225065338468009: CMCLAS2: lægemidler til obstruktive luftvejssygdomme
0633-009_001200008 | 225065338468009: CMCLAS3: adrenergica til systemisk brug
0633-009_001200008 | 225065338468009: CMCLSCD1: R
0633-009_001200008 | 225065338468009: CMCLSCD2: R03
0633-009_001200008 | 225065338468009: CMCLSCD3: R03C
0633-009_001200008 | 225065338468010: CMCLSCD2: R03
0633-009_001200008 | 225065338468010: CMCLSCD3: R03C
0633-009_001200009 | 225065338468008: CMBRTRM: Albuterol
0633-009_001200009 | 225065338468008: CMCLAS1: åndedrætsorganerne
0633-009_001200009 | 225065338468008: CMCLAS2: lægemidler til obstruktive luftvejssygdomme
0633-009_001200009 | 225065338468008: CMCLSCD3: R03C
0633-009_001200018 | 225065338468009: CMCLAS2: lægemidler til obstruktive luftvejssygdomme
0633-009_001200018 | 225065338468011: CMROUTE: Respir
indledende output-fil, at jeg skriver til fra AWK:
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE | USUBJID | CMSEQ |

hvad resultatet skal være:
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d

CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE | USUBJID | CMSEQ |
Albuterol | åndedrætsorganerne | lægemidler til obstruktive luftvejssygdomme | adrenergica til systemisk brug | R | R03 | R03C | | 0633-009_001200008 | 225065338468009

Senest redigeret af chowdhut; 06-18-2009 kl 05:05 PM..
  #5 (permalink)  
Old 06-18-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Beliggenhed: Boston, MA
Indlæg: 5.131

Code:
awk -F':' -v SUBSEQ="${sub}" -v NAM="${n}" '.....' myFileName
OR
awk -F':' '.....' SUBSEQ="${sub}" NAM="${n}" myFileName

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 01:24 PM.


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