0

我正在编写一个记录到文件的 KornShell (ksh) 脚本。我正在将我的一个命令 (scp) 的输出重定向到同一个文件,但如果可能的话,我想在日志文件中这些行的开头添加一个选项卡。

这可能吗?

编辑:另外我应该提到我重定向的文本来自stderr。我的线路目前看起来像这样:

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

1 回答 1

2

注意:以下不适用于ksh(有关可能的解决方案,请参阅此问题)。


你可能可以做类似的事情

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}

此答案中描述了该技术。

于 2012-12-06T17:07:50.227 回答