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
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

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 05-27-2009
chowdhut chowdhut is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Locatie: CT, Verenigde Staten
Posten: 4
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 | |
  #2 (permalink)  
Old 05-27-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: Sep 2006
Berichten: 2557
dus wat heb je met awk?
  #3 (permalink)  
Old 05-28-2009
chowdhut chowdhut is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Locatie: CT, Verenigde Staten
Posten: 4
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..
  #4 (permalink)  
Old 06-18-2009
chowdhut chowdhut is offline
Geregistreerde gebruiker
  
 

Join Date: mei 2009
Locatie: CT, Verenigde Staten
Posten: 4
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..
  #5 (permalink)  
Old 06-18-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

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

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

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:54 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