The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



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.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Conversione dei file gehlnar Shell scripting e di programmazione 4 04-17-2009 07:47 AM
File di conversione sridhar_423 Shell scripting e di programmazione 2 03-16-2009 04:47 PM
Conversione dei file di ascii mora UNIX e avanzata per utenti esperti 4 03-31-2008 12:29 PM
Xhtml utility di conversione file Postscript file dattatray.b SUN Solaris 0 08-25-2005 06:36 AM
conversione dei file hipo UNIX for Dummies Domande & Risposte 1 07-24-2001 09:24 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 04-23-2009
gehlnar gehlnar is offline
Utente Registrato
  
 

Iscriviti Data: gennaio 2009
Interventi: 47
Conversione dei file e awk

Hi Everyone,
Sono confuso con l'output del file di input e io sono qui di seguito utilizzando il comando in uno script per ottenere i risultati attesi.
Inoltre vorrei aggiungere un'altra condizione utilizzando logico AND (& &) al posto di $ 2 \u003d\u003d "L" ($ 4 \u003d 0 - 4) $ di $ 2 \u003d\u003d "L" & & $ 3 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) ma io sono sempre alcuni awk errore.
Per favore qualcuno può consigliare su questo per favore?

Codice:
 
cat $FILENAME |grep "^PL"|tr -d '\015'|sort -k1,2|nawk -F'|' 'BEGIN {OFS="~"}$2=="L"{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT";{arr[$1"~"$5"~"$6]+=$4} END {for (i in arr) {print i,arr[i]}}'>$TEMPFILE
Input File 
============
ISIN|BL|STATUS|QTY|SNAME|CLASS
PLKGHM000017|B|L|85000|KGHM|COM
PLPKO0000016|B|L|310000|PKO S.A.|COM
|B|L|0||
PLKGHM000017|L|L|35000|KGHM|COM
PL0000101937|B|L|100000|DS1110|GOV
|L|L|0||
PLKGHM000017|L|L|40000|KGHM|COM
PLPKO0000016|L|L|290000|PKO S.A.|COM
Present Output
==============
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Expected Output
==============
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
  #2 (permalink)  
Old 04-23-2009
devtakh devtakh is offline
Utente Registrato
  
 

Iscriviti Data: ottobre 2007
Località: Bangalore
Interventi: 514
Citazione:
Originalmente inviato da gehlnar View Post
Hi Everyone,
Sono confuso con l'output del file di input e io sono qui di seguito utilizzando il comando in uno script per ottenere i risultati attesi.
Inoltre vorrei aggiungere un'altra condizione utilizzando logico AND (& &) al posto di $ 2 \u003d\u003d "L" ($ 4 \u003d 0 - 4) $ di $ 2 \u003d\u003d "L" & & $ 3 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) ma io sono sempre alcuni awk errore.
Per favore qualcuno può consigliare su questo per favore?

Codice:
 
cat $FILENAME |grep "^PL"|tr -d '\015'|sort -k1,2|nawk -F'|' 'BEGIN {OFS="~"}$2=="L"{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT";{arr[$1"~"$5"~"$6]+=$4} END {for (i in arr) {print i,arr[i]}}'>$TEMPFILE
Input File 
============
ISIN|BL|STATUS|QTY|SNAME|CLASS
PLKGHM000017|B|L|85000|KGHM|COM
PLPKO0000016|B|L|310000|PKO S.A.|COM
|B|L|0||
PLKGHM000017|L|L|35000|KGHM|COM
PL0000101937|B|L|100000|DS1110|GOV
|L|L|0||
PLKGHM000017|L|L|40000|KGHM|COM
PLPKO0000016|L|L|290000|PKO S.A.|COM
Present Output
==============
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Expected Output
==============
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
si può fornire un campione di qui i risultati attesi? Dal tuo post, non è chiaro ciò che si sta tentando di realizzare.


salute,
Devaraj Takhellambam
  #3 (permalink)  
Old 04-23-2009
gehlnar gehlnar is offline
Utente Registrato
  
 

Iscriviti Data: gennaio 2009
Interventi: 47
Salve,

Questo è il risultato atteso.

Previsto in uscita
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
PKO SA PLPKO0000016 ~ ~ ~ 20000 SHS
PL0000101937 ~ ~ DS1110 FMT ~ 100000
PLKGHM000017 ~ ~ KGHM SHS ~ 10000

Ma se vedi il mio post originale Sono sempre presente, ma insieme ad alcuni altri record. Per favore fatemi sapere se avete ulteriori query su questo.

Salute,
gehlnar


  #4 (permalink)  
Old 04-23-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderatore
  
 

Iscriviti Data: febbraio 2005
Località: Boston, MA
Messaggi: 5.119
Se davvero non hanno bisogno di 'gatto', 'grep' ecc ... - Awk può fare tutto se stesso.

nawk-f geh.awk MyFile

geh.awk:
Codice:
BEGIN {
  FS="|"
  OFS="~"
}
!/^PL/ { next }
$2=="L" && $3=="L" {$4=0-$4}
{
  $6=($6=="COM")?"SHS":"FMT"
  arr[$1 OFS $5 OFS $6]+=$4
}
END {
  for (i in arr)
    print i,arr[i]
}
Ma io non sono sempre i vostri risultati attesi, anche se ho cercato di seguire il vostro codice.
  #5 (permalink)  
Old 04-23-2009
gehlnar gehlnar is offline
Utente Registrato
  
 

Iscriviti Data: gennaio 2009
Interventi: 47
Grazie Vgersh, ho corretto il codice per la tua consulenza.

Sono sempre i risultati attesi, se l'uso di awk operazione vale a dire due volte memorizzando l'output prima operazione array
e il nuovo file se i uso array operazione Sono sempre corretta produzione.

Ma, come ho utilizzando awk è stato due volte, ho pensato di combinare esso. Abbiamo qualcosa di simile tubo in awk?


Così sarà come prima ottenere questo file ..

Codice:
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
array e quindi eseguire operazioni di calcolo su questo, ma la mia domanda è questa non può essere fatto utilizzando uno awk operazione.
  #6 (permalink)  
Old 04-23-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderatore
  
 

Iscriviti Data: febbraio 2005
Località: Boston, MA
Messaggi: 5.119
Io non seguire ciò che si sta facendo - dispiace.
Potrebbe postare i passi e la modifica del codice, per favore?
  #7 (permalink)  
Old 04-23-2009
gehlnar gehlnar is offline
Utente Registrato
  
 

Iscriviti Data: gennaio 2009
Interventi: 47
vgersh,

Fase 1: iniziale di conversione di file di base per il calcolo
Codice:
cat INPUTFILE |tr -d '\015'|sort -k1,2|nawk -F'|' 
'BEGIN {OFS="~"}!/^PL/{next}$2=="L" && $3=="L"
{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT"{print $0}'>TEMPFILE
Fase 2: calcolo effettivo per ottenere risultati attesi di cui sopra utilizzando l'output di tempfile
Codice:
 awk -F'~' '{OFS="~"}{arr[$1OFS$5OFS$6]+=$4} END 
  {for (i in arr) {print i,arr[i]}}'<TEMPFILE>EXPECTEDFILE
Sto usando due fasi di cui sopra in uno script, Hope you got some idea e la mia idea era quella di combinare
queste due passi in uno solo.

Salute,
gehlnar
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 Su




Tutti gli orari sono GMT -4. La data di oggi è 01:35 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-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0