0

ファイルにログを記録する KornShell (ksh) スクリプトを作成しています。コマンドの 1 つ (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が、簡単な Web 検索で動作するはずです。

stdoutまた、一部のコマンドは と の両方に書き込むことができることに注意してstderrください。それを処理することを忘れないでください。

編集:質問のコメントと編集に応じて、調整されたコマンドは次のようになります

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 に答える