Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
Google Site



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 05-27-2009
Utente Registrato
 

Iscriviti Data: maggio 2009
Ubicazione: CT, Stati Uniti d'America
Interventi: 4
Per allineare i dati clinici di file tramite awk

Ciao, io sono nuovo script di shell e 1 settimana in awk. Io sono riuscito finora a file di output in formato di file di esempio 1 e File 2, come illustrato di seguito e File 3 soluzione di uscita è quello che sto cercando ... grazie

File 1:
0633-009_001200008: 225.065.338.468.009: CMBRTRM: albuterol
0633-009_001200008: 225.065.338.468.009: CMCLAS1: sistema respiratorio
0633-009_001200008: 225.065.338.468.009: CMCLAS2: farmaci per ostruttiva
0633-009_001200008: 225.065.338.468.009: CMCLAS3: adrenergici
0633-009_001200009: 225.065.338.468.008: CMBRTRM: albuterol
0633-009_001200009: 225.065.338.468.008: CMCLAS1: sistema respiratorio
0633-009_001200009: 225.065.338.468.008: CMCLAS2: farmaci per ostruttiva
0633-009_001200009: 225.065.338.468.008: CMCLSCD3: R03C
Fascicolo 2:
USUBJID | CMSEQ | CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE |
0633-009_001200008 | 225065338468009
0633-009_001200009 | 225065338468008

Bisogno del file di output con 3 condizioni:
File 1's Field 4 valori (seprated da ":" per esempio albuterol) aggiunge al file da 2
Campo 3 del valore di 1 file (per esempio CMBRTM) è uguale a 2 file di intestazione separato da | (per esempio | CMBRTM |) e
per quella fila di inserire File 2 di campo 1 e campo 2 valori è pari a 1 File di campo 1 e 2 valori


Out put file 3:
USUBJID | CMSEQ | CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE |
633-009_001200008 | 225.065.338.468.009 | albuterol | respiratorysystem | farmaci per ostruttiva | adrenergici |||||
0633-009_001200009 | 225.065.338.468.008 | albuterol | vie respiratorie | farmaci per ostruttiva | | | | R03C | |
Sponsored Links
  #2 (permalink)  
Old 05-27-2009
Utente Registrato
 

Join Date: Sep 2006
Messaggi: 2.604
Che cosa hai con awk?
  #3 (permalink)  
Old 05-28-2009
Utente Registrato
 

Iscriviti Data: maggio 2009
Ubicazione: CT, Stati Uniti d'America
Interventi: 4
Finora nella mia umile lavoro .....


Codice:
# 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


Ora so che il mio colonne in File 2, so che il mio numero di righe in file da 2 file 1,
Ho bisogno di un processo Cloumn 4 da file 1 e incollare in File 2, il pensiero ->

Ho bisogno di un modo di formare una stringa per ogni valori riportati nella colonna 4 del Fascicolo 1 seprated da '|' e
che la stringa si aggiunge per ogni linea di File 2 basata su:

Necessità di capire per ogni colonna unica 1 e colonna 2, in combinazione File 1
, Ho bisogno di scegliere la colonna 4 valori e aggiungere accanto alla riga applicabile in File 2
e quando lo faccio i valori stringa con la colonna 4 per la colonna 3 del File 1 deve corrispondere l'ordine di intestazione del file 2


Spero di non sto facendo la mia spiegazione :-( complicata

Last edited by chowdhut; 05-28-2009 at 04:22 PM..
  #4 (permalink)  
Old 06-18-2009
Utente Registrato
 

Iscriviti Data: maggio 2009
Ubicazione: CT, Stati Uniti d'America
Interventi: 4
Ho fatto progressi e in questa fase ho bisogno di aiuto per capire perché un ciclo for esterno variabile KSH non decodifica in AWK ma ciclo for interno fa. Qui di seguito è il mio codice,
Se mi variabile codice duro 'SUBSEQ' in AWK funziona, ma se cerco di passare il SUBSEQ da KSH, esso non e quando passare la variabile 'NAM' da KSH funziona: ho tutti i file qui sotto. Ho bisogno di aiuto per il codice dà in uscita se il commento della linea
# SUBSEQ \u003d " '$ sub'"; e commentare le hardcode
SUBSEQ \u003d "0633-009_001200008 | 225065338468009";

Perché non seguire il blocco if non valuta SUBSEQ if (arr [j, 1] \u003d\u003d SUBSEQ & & & & arr [j, 2] \u003d\u003d NAM)

#! / bin / ksh


# Leggere soggetto e la sequenza
Un set-subseq_array $ (<subseq.txt)


# Legge applicabile QVALS Ordina per lo studio (può essere da definire)

set-A qnam_array $ (<qnam.txt)


per la sottorubrica in $ (subseq_array [@])
fare
per n in $ (qnam_array [@])
fare

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

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



I file:
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

file di origine che sono da leggere
supp_q.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d

0633-009_001200008 | 225065338468009: CMBRTRM: albuterol
0633-009_001200008 | 225065338468009: CMCLAS1: sistema respiratorio
0633-009_001200008 | 225065338468009: CMCLAS2: farmaci per le malattie ostruttive delle vie respiratorie
0633-009_001200008 | 225065338468009: CMCLAS3: adrenergics per uso sistemico
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: sistema respiratorio
0633-009_001200009 | 225065338468008: CMCLAS2: farmaci per le malattie ostruttive delle vie respiratorie
0633-009_001200009 | 225065338468008: CMCLSCD3: R03C
0633-009_001200018 | 225065338468009: CMCLAS2: farmaci per le malattie ostruttive delle vie respiratorie
0633-009_001200018 | 225065338468011: CMROUTE: Respir
iniziale del file che sto scrivendo a AWK da:
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
CMBRTRM | CMCLAS1 | CMCLAS2 | CMCLAS3 | CMCLSCD1 | CMCLSCD2 | CMCLSCD3 | CMROUTE | USUBJID | CMSEQ |

ciò che l'output deve essere:
\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 | sistema respiratorio | farmaci per le malattie ostruttive delle vie respiratorie | adrenergics per uso sistemico | R | R03 | R03C | | 0633-009_001200008 | 225065338468009

Last edited by chowdhut; 06-18-2009 at 05:05 PM..
  #5 (permalink)  
Old 06-18-2009
vgersh99's Avatar
Moderatore
 

Iscriviti Data: febbraio 2005
Località: Boston, MA
Messaggi: 5.200

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

Sponsored Links
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Chiuso


Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Incolla Comando non allineare la mia uscita jplayermx Shell scripting e di programmazione 4 09-05-2008 03:03 PM
Allineare il testo da un file. earlepps UNIX for Dummies Domande & Risposte 9 08-01-2006 09:37 AM
allineare più campi e riempire gli spazi con zero DebianJ Shell scripting e di programmazione 2 11-23-2005 07:51 AM
come ad allineare le intestazioni in relazione awk galinaqt Shell scripting e di programmazione 3 10-16-2005 04:41 PM
Come sottolineano / grassetto e le modalità per allineare la produzione clara UNIX for Dummies Domande & Risposte 1 06-16-2005 01:41 PM



Tutti gli orari sono GMT -4. La data di oggi è 07:06 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2010. Tutti i diritti Reserved.Ad Management by RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0