2015-06-11 112 views
1

我的shell腳本的輸出如下(請參考附件圖片)如何shell腳本的輸出格式從一列到多列

workflow_Name1 
Succeeded 
Tue May 19 11:15:33 2015 
workflow_Name2 
Succeeded 
Wed Jun 10 18:00:21 2015 

我想這是改變

workflow_Name1 :-Succeeded :-Tue May 19 11:15:33 2015 
workflow_Name2 :-Succeeded :-Wed Jun 10 18:00:21 2015 

以下是我正在使用的腳本。你能否讓我知道如何做到這一點。

#!/bin/bash 
# source $HOME/.bash_profile 

output=/home/infaprd/cron/output.lst 

sqlplus -s user/[email protected] <<EOF >$output # Capture output from SQL 
set linesize 55 pages 500 
spool output_temp.lst; 
set head off; 
select sysdate from dual; 
set head on; 
spool off; 
EOF 

for name in workflow_Name1 workflow_Name2; do 
    pmcmd getworkflowdetails -Repository ${name} 
done | 
grep -e "Workflow:" -e "Workflow run status:" -e "End time:" | cut -d'[' -f2 | cut -d']' -f1 | 

sed -e 's/ *$//' >> $output 
mail -s "Output - `date '+%d-%m-%y'`" [email protected] <$output 

回答

2

您可以用做awk

awk '{getline a;getline b; if($0) printf "%-s\n", $0 " :-" a " :-" b}' 

輸出:

workflow_Name1 :-Succeeded :-Tue May 19 11:15:33 2015 
workflow_Name2 :-Succeeded :-Wed Jun 10 18:00:21 2015 

您還可以使用sed來完成這個任務:

sed 'N;N;s/\n/ :-/g' 
+0

感謝Rakholiya,sed的的產量正在一條線上。如何在第二行打印第二個工作流程。 – Nair

+0

看看http://ideone.com/AJZANa。 'sed'輸出也與awk輸出相同。 –

+0

謝謝Rakholiya,感謝您的幫助。問題是,在寫入文件時,它的行將成爲單行。否則,在命令提示符下,它會像預期的那樣出現兩行。任何指針。 – Nair