2012-12-06 24 views
0

我正在寫入記錄到文件的KornShell(ksh)腳本。我將其中一個命令(scp)的輸出重定向到同一個文件,但如果可能的話,我希望在日誌文件的這些行的開始處添加一個選項卡。將輸出寫入帶有在ksh腳本中添加的選項卡/文本的文件

這可能嗎?

編輯:另外我應該提到,我重定向的文本來自stderr。我行目前看起來是這樣的:

scp -q ${wks}:${file_location} ${save_directory} >> ${script_log} 2>&1 

回答

2

注:以下不適用於ksh工作(見this question可能的解決方案)。


你或許可以這樣做

my_command | sed 's/^/\t/' >> my.log 

的想法是,在某種方式流編輯器,如sed處理命令的輸出。在這種情況下,每個行的開頭都會添加一個製表符。試想一下:

$ echo -e 'Test\nfoobar' | sed 's/^/\t/' 
    Test 
    foobar 

我沒有ksh測試這一點,但一個快速網絡搜索表明,它應該工作。

另請注意,有些命令可以同時寫入stdoutstderr,不要忘記處理它。

編輯:響應意見和問題的編輯,調整命令可以像

scp -q ${wks}:${file_location} ${save_directory} 2>&1 | \ 
    sed 's/^/\t/' >> ${script_log} 

,或者,如果你想擺脫stdout完全

scp -q ${wks}:${file_location} ${save_directory} 2>&1 >/dev/null | \ 
    sed 's/^/\t/' >> ${script_log} 

該技術在this answer中描述。

+0

啊是的,你提出了另一個我忘了提到的問題。我記錄的文本來自stderr。這會對我如何實現這一點產生影響嗎? – MasterZ

+0

@MasterZ你只需要調整重定向。例如,請參見[此問題](http://stackoverflow.com/q/2342826/1258041)。 –

+0

我修改我的代碼,以考慮到你給的鏈接,但現在腳本的一部分根本不運行,我得到錯誤「無法識別的命令:/ ^/\ t /」...我編輯了我的原始問題我使用的代碼如果有幫助。 – MasterZ

相關問題