Unix 쉘 스크립트를 조정하여 로그 파일에서 CSV 생성

Unix 쉘 스크립트를 조정하여 로그 파일에서 CSV 생성

로그에서 출력을 생성하는 Unix 쉘 스크립트가 있습니다.

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

현재 출력은 다음과 같습니다.

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

하지만 내가 원하는 것은 다음과 같습니다.

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

이 작업을 수행하는 방법에 대한 제안 사항이 있습니까?


나는 당신이 제안한 방식으로 그것을했습니다 :

   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

그러나 출력은 다음과 같습니다.

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,

답변1

이 하나의 라이너는 보기 흉해 보일 수 있지만 제 생각에는 효과가 있다고 생각합니다(사용 사례를 올바르게 이해했다면).

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

답변2

루프 스크립트이므로 루프마다 변수를 덮어씁니다. 여기서 제가 제안하는 것은 "보고서"에 대한 로그 파일과 "날짜"에 대한 로그 파일도 만드는 것입니다(로그 추가).

스크립트 끝("완료" 줄 바로 아래)에서 아래 명령을 실행합니다.

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

또는 다른 루프 스크립트를 만드세요.

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

그런 다음 로그 파일을 지우십시오.

echo "" > report_log_file; echo "" > date_log_file

관련 정보