![]() |
|
|
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 |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
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 | | |
|
||||
|
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.. |
|
||||
|
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.. |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|