2016-06-17 11 views
2

Ich habe zwei Befehle:Concat Zwei Befehl Ergebnis in Datei

cat BIG_DATAfinal.txt | grep "STATUS" | awk '{print $5}' 
cat BIG_DATAfinal.txt | grep "start" | awk '{print $3}' | sed 's/time;//g' 

ich Concat diesen zwei Befehl in einer Datei mag.

Beispiel:

LAGEBERICHT FÜR JOB: CargaDestino

generiert: 2016-06-17 10:52:14
Job Zeit beginnen; 2015.03.30 13.11.45
Job Endzeit; 2016-06-17 10:52:14
Job verstrichene Zeit; 10677: 40: 29
Auftragsstatus; 99 (nicht ausgeführt)

Das erwartete Ergebnis wäre:

CargaDestino; 2015-03-30

Vielen Dank!

Antwort

0

Zum Beispiel:

a=`cat BIG_DATAfinal.txt | grep "STATUS" | awk '{print $5}'` 
b=`cat BIG_DATAfinal.txt | grep "start" | awk '{print $3}' | sed 's/time;//g'` 
echo "$a;$b" 
+0

Ja, aber ich habe diesen Befehl versucht: echo "$ a; $ b" und das Ergebnis gab mir das: ; 2015-03-30argaDestino –

+0

neues Zeilenproblem, benutze printf ... oder stelle die Ergebnisse in 2 verschiedene Dateien und benutze 'join' –

+0

Ich habe Probleme mit meiner MKS-Version. Gelöst. –

0

Sie können dies mit einem einzigen awk Programm:

awk -v OFS=";" ' 
    /STATUS/ {status=$5} 
    /start/ {split($3, a, /;/); start=a[2]} 
    status && start {print status, start; status=start=""} 
' BIG_DATAfinal.txt 

Wenn die Ausgabe wie ;2015-03-30o aussieht, dann Ihre Datei hat \r\n Zeilenende, und Sie tun sollen dies:

sed 's/\r$//' BIG_DATAfinal.txt | awk -v OFS=";" ' 
    /STATUS/ {status=$5} 
    /start/ {split($3, a, /;/); start=a[2]} 
    status && start {print status, start; status=start=""} 
'