Regolazione di uno script della shell Unix per creare un CSV da un file di registro


0

Ho uno script di shell Unix che genera output da un registro.

for i in HistSimBasislieferung hedgeAccountingF4PublicSend;do
  report1=$(echo -n $i:)
  date1=$(grep -e $i $PALME_CONF | grep "The job finished" | tail -1 | awk '{print $1,$2}'|\<br/> sed 's/^.\(.*\).$/\1/')
  final="$report1 $date1"
  echo "$final"
done

Al momento l'output è simile al seguente:

HistSimBasislieferung 2015-03-11 01:03:02
hedgeAccountingF4PublicSend 2015-03-11 00:16:34

Ma quello che voglio è qualcosa del genere:

HistSimBasislieferung,hedgeAccountingF4PublicSend
2015-03-11 01:03:02,2015-03-11 00:16:34

Hai qualche suggerimento su come farlo?


L'ho fatto come mi hai suggerito:

   for i in HistSimBasislieferung hedgeAccountingF4PublicSend;do
           echo -n $i > report_log
           grep -e $i $PALME_CONF | grep "The job finished" | tail -1 | awk '{print $1,$2}' | sed 's/^.\(.*\).$/\1/' > date_log

   done
   cat < report_log | xargs echo | tr ' ' ',';
   cat < date_log | xargs echo | tr ' ' ',';
   echo "" > report_log; echo "" > date_log

ma l'output ha dato:

hedgeAccountingF4PublicSend2015-03-11,00:16:34    
I need it like this:  
HistSimBasislieferung,hedgeAccountingF4PublicSend,  
2015-03-11 03:05:40,2015-03-11 02:12:19,

Risposte:


0

Questa fodera potrebbe sembrare brutta ma penso che funzioni (se capisco correttamente il tuo caso d'uso).

your_shell_script.sh  | cut -d ' ' -f 1 | tr '\n' ',' | sed 's/,$/\n/'; your_shell_script.sh | cut -d ' ' -f '2-' | tr '\n' ',' | sed 's/,$/\n/'  

0

È uno script di loop, quindi sovrascriverà la variabile ogni loop. Il mio suggerimento qui è quello di creare un file di log per il "report" e un file di log anche per "date" (append log).

Alla fine del tuo script (proprio sotto la riga "done"), esegui il comando seguente:

cat <\report_log_file> | xargs echo | tr ' ' ',';
cat <\date_log_file> | xargs echo | | tr ' ' ','

o creare un altro script di loop.

for i in <\report_log_file> <\date_log_file>; do
   cat $i | xargs echo | tr ' ' ',';
done

quindi, cancellare i file di registro:

echo "" > report_log_file; echo "" > date_log_file

Ciao David for i in HistSimBasislieferung hedgeAccountingF4PublicSend; do echo -n $ i> report_log grep -e $ i $ PALME_CONF | grep "Il lavoro è finito" | coda -1 | awk '{stampa $ 1, $ 2}' | sed 's / ^. (. *). $ / \ 1 /'> date_log fatto cat <report_log | xargs echo | tr '' ','; cat <date_log | xargs echo | tr '' ','; echo ""> report_log; echo ""> date_log dà hedgeAccountingF4PublicSend2015-03-11,00: 16: 34
Uensal
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.