2012-02-29 5 views
2

私はカットする必要があるログファイルを持っています。これは、すべての行にDD-MM-YYYY HH:MM:SSを出力します。理想的には、このようなファイルの最後の10分を望みます。どのようにsedにperlコマンドを含めることができますか?

私は10分前の時間を取得するために、perlのコマンドを持っている:

perl -e 'use POSIX qw(strftime); print strftime "%e-%m-%Y %H:%M:%S",\ localtime(time()- 600);' 

出力例:29-02-2012午後04時38分14秒

とファイルをカットするsedコマンド。これは手動の日付とシステム時刻が2番目の変数として機能します。私は思ったSolaris 8とCシェルを使用しているので、日付の高度な機能を使用することはできません。

sed '1,/29-02-2012 16:07/d;/=$(date +%d-%m-%y %H:%M:%S")/,$d' debug.log | tee cut-log | less 

すべてのヘルプ感謝...

+0

あなたはgnu sedを持っていますか? – Kent

+0

あなたはTZ varを使ってSolaris 8の日付を操作することができます(今はそのようなものにアクセスできない)、comp.unix.shellのGoogleグループ検索がそれを表示します。あなたのシステムにGNUツールが/ usr/local/binにインストールされているかどうか確認してください。また、偉大なシェルではありませんが、cshでは不可能であるべきことについては何もありません。すべてのことが言った、私は以下のkevは正しい軌道にあると思う。がんばろう。 – shellter

答えて

1

$(date)は、単一引用符で囲まれた文字列に展開されません。二重引用符に変更します。

sed "1,/29-02-2012 16:07/d;/=$(date +'%d-%m-%y %H:%M:%S')/,\$d" 
2

perlですべてを実行するには、..オペレータを使用してください。何かのように

perl -MPOSIX -n -e 'print if /@{[ strftime "%e-%m-%Y %H:%M:%S",\ localtime(time()- 600) ]}/ .. /@{[ strftime "%e-%m-%Y %H:%M:%S",\ localtime(time()) ]}/ ' 

編集:コードの悪いペースト。私はそれを修正しました。

+0

私は新しいと私を許しますが、私はこのエラーがあります: > perl -MPOSIX -n -e '/ strftime "%e-%m-%Y%H:%M:%S" \ localtime(time() - 600)]}/../$ {[strftime "%e-%m-%Y%H:%M:%S"、\ localtime(time)]}/' -e line 1、near ")]" コンパイルエラーのために-eの実行が中止されました。 これをsedに渡しますか? – dueyfinster

+0

修正する必要があります。 –

関連する問題