
로그에서 출력을 생성하는 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