![]() |
|
|
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 |
| Plak Commando niet sluiten mijn uitgang | jplayermx | Programmeren en Shell Scripting | 4 | 09-05-2008 03:03 PM |
| Uitlijnen Tekst uit een bestand. | earlepps | UNIX voor Dummies Questions & Answers | 9 | 08-01-2006 09:37 |
| Aanpassing van een aantal velden en ruimtes vullen met nul | DebianJ | Programmeren en Shell Scripting | 2 | 11-23-2005 07:51 |
| hoe te brengen verslag kopteksten in awk | galinaqt | Programmeren en Shell Scripting | 3 | 10-16-2005 04:41 PM |
| Hoe te onderstrepen / vet en hoe de aanpassing van de output | clara | UNIX voor Dummies Questions & Answers | 1 | 06-16-2005 01:41 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Aanpassing van klinische gegevens naar bestanden met awk
Hallo, ik ben nieuw in shell scripts en 1e week in awk. Ik heb tot nu toe in geslaagd om bestanden formaat output naar voorbeeld bestand 1 en File 2 zoals hieronder aangegeven en Bestandsbeheer 3 output oplossing is wat ik ben op zoek naar ... thanks
File 1: 0633-009_001200008: 225065338468009: CMBRTRM: albuterol 0633-009_001200008: 225065338468009: CMCLAS1: ademhalingswegen 0633-009_001200008: 225065338468009: CMCLAS2: geneesmiddelen voor obstructieve 0633-009_001200008: 225065338468009: CMCLAS3: Adrenergica 0633-009_001200009: 225065338468008: CMBRTRM: albuterol 0633-009_001200009: 225065338468008: CMCLAS1: ademhalingswegen 0633-009_001200009: 225065338468008: CMCLAS2: geneesmiddelen voor obstructieve 0633-009_001200009: 225065338468008: CMCLSCD3: R03C Bestand 2: USUBJID | CMSEQ | CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE | 0633-009_001200008 | 225065338468009 0633-009_001200009 | 225065338468008 Need Output Bestand 3 met Voorwaarden: Bestand 1's Veld 4 waarden (seprated door ":" bijvoorbeeld albuterol) voegt naar bestand 2 door Veld 3 waarde van File 1 (bijvoorbeeld CMBRTM) equals File 2 header separeted door | (bijvoorbeeld | CMBRTM |) en voor die rij van insert File 2 veld 1 en veld 2-waarden is gelijk aan Bestand 1 veld 1 en 2-waarden Out zetten Bestand 3: USUBJID | CMSEQ | CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE | 633-009_001200008 | 225065338468009 | albuterol | respiratorysystem | geneesmiddelen voor obstructieve | Adrenergica ||||| 0633-009_001200009 | 225065338468008 | albuterol | ademhalingswegen | geneesmiddelen voor obstructieve | | | | R03C | | |
|
||||
|
Tot nu toe in mijn nederige werk ..... 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 heb ik mijn columns in File 2 weet, weet ik mijn aantal rijen in File 2 uit bestand 1, Ik moet Cloumn 4 proces van File 1 en plakken in File 2, denken -> Ik heb een manier om een string voor elke waarden in kolom 4 van File 1 seprated door '| vorm' en die string voegt voor elke lijn van File 2 op basis van: Noodzaak om uit cijfer voor elke unieke kolom 1 en kolom 2 in combinatie File 1 , Ik moet kiezen de kolom 4 waarden en naast de toepasselijke rij toe te voegen in de File 2 en als ik dat doen de string waarden met kolom 4 voor kolom 3 van File 1 moet de kop volgorde van File 2 match hoop dat ik niet het maken van mijn uitleg ingewikkeld :-( Laatst bewerkt door chowdhut; op 05.28.2009 04:22 PM.. |
|
||||
|
Ik maakte vooruitgang en in deze fase ik wat hulp nodig om erachter te komen waarom een buitenste lus KSH variabele niet decoderen in AWK maar binnenste for-lus doet. Hieronder is mijn code,
Als ik hard code variabele 'SUBSEQ' in AWK het werkt maar als ik probeer de SUBSEQ overgaan van KSH, is het niet en toen ik langs de variabele 'NAM' van KSH het werkt: Ik heb al het bestand hieronder. Ik moet dus hulp code geeft de uitgang als ik de lijn uncomment # SUBSEQ \u003d " '$ sub'"; en commentaar van de hardcoden SUBSEQ \u003d "0633-009_001200008 | 225065338468009"; Niet na waarom het blok niet beoordelen SUBSEQ if (arr [j, 1] \u003d\u003d SUBSEQ & & & & arr [j, 2] \u003d\u003d NAM) #! / bin / ksh # Lees onderwerp en de volgorde set-A subseq_array $ (<subseq.txt) # Lees de toepasselijke QVALS Orde voor de studie (kan worden uit definiëren) set-A qnam_array $ (<qnam.txt) voor sub in $ (subseq_array [@]) doen voor n in $ (qnam_array [@]) doen # 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; ) ) END ( 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 ` gedaan print $ sub>> out1.txt break; gedaan De bestanden: 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 bronbestand dat ik het lezen van supp_q.txt \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d 0633-009_001200008 | 225065338468009: CMBRTRM: albuterol 0633-009_001200008 | 225065338468009: CMCLAS1: ademhalingswegen 0633-009_001200008 | 225065338468009: CMCLAS2: geneesmiddelen voor obstructieve luchtwegaandoeningen 0633-009_001200008 | 225065338468009: CMCLAS3: Adrenergica voor systemisch gebruik 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: ademhalingswegen 0633-009_001200009 | 225065338468008: CMCLAS2: geneesmiddelen voor obstructieve luchtwegaandoeningen 0633-009_001200009 | 225065338468008: CMCLSCD3: R03C 0633-009_001200018 | 225065338468009: CMCLAS2: geneesmiddelen voor obstructieve luchtwegaandoeningen 0633-009_001200018 | 225065338468011: CMROUTE: Respir eerste output bestand dat ik schrijven vanaf AWK: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE | USUBJID | CMSEQ | wat de output moet worden: \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 | ademhalingswegen | geneesmiddelen voor obstructieve luchtwegaandoeningen | Adrenergica voor systemisch gebruik | R | R03 | R03C | | 0633-009_001200008 | 225065338468009 Laatst bewerkt door chowdhut; op 06.18.2009 05:05 PM.. |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|