特定の出力のみをログファイルに保存する

特定の出力のみをログファイルに保存する

私はunisonサーバーにデータを同期するために使用しており、最近このための cronjob を作成しました。cronjob は起動時に実行され、出力をログ ファイルに保存します。(追加情報は下記を参照)。

私が抱えている問題は、unison の出力が非常に多いため、ログ ファイルには概要のみを保存したいということです。それを実現する方法はありますか? unison の冗長性を減らす方法が見つからなかったため、出力を何らかの方法でフィルターできるのではないかと思いましたが、方法がわかりません。

ありがとう!

追加情報:

現在、ログ ファイルは次のようになります。

Contacting server...
Connected [//theserver//share/HDA_DATA/elrudi -> //thelaptop//home/elrudi]
Looking for changes
\ syncAll/Code/Aptana/T...avascript library code assist.txt

\ syncAll/Code/develope...nk/20070607 contacten (INDEX).xls

\ syncAll/Code/sourcefi...okexport/photos/10152112061815397

| syncAll/Code/Python/d...rawable-hdpi/ic_action_search.png

(... many many lines ...)

| syncAll/Work/2008_10 ...profile/StandardLastprofil_H0.xls

| syncAll/Work/2008_10 ...n/Load Profiles/Lastprofil_H0.xls

Waiting for changes from server
Reconciling changes
changed  ---->            syncAll/scriptfile1.sh 
Propagating updates
UNISON 2.40.102 started propagating changes at 12:07:31.55 on 07 Oct 2015
[BGN] Updating file syncAll/scriptfile1.sh from /home/elrudi to //theserver//share/HDA_DATA/elrudi
100%  00:00 ETA

[END] Updating file syncAll/scriptfile1.sh
100%  00:00 ETA

UNISON 2.40.102 finished propagating changes at 12:07:31.61 on 07 Oct 2015
100%  00:00 ETA

Saving synchronizer state
Synchronization complete at 12:07:36  (1 item transferred, 0 skipped, 0 failed)

、、、(プロセスがまだ完了していないことを示す回転バー)|で始まる行を削除したいと思います。/-\

追加情報:
crontab -eショー

@reboot /home/elrudi/sync.sh -batch 60 >> /home/elrudi/.cronjobs.log 2>&1   

スクリプトsync.shは、サーバーがローカルまたはリモートでアクセス可能かどうかを確認し、適切なunisonコマンドを実行します。パラメーターは、ユーザー入力なしで実行-batchするために追加され、 は待機時間です (接続が利用可能になる前に が実行されないようにするため)。unison60unison

答え1

unisonスクリプトを呼び出すときは、sync.sh次のように呼び出します。

unison ... 2>&1 | grep -vE '^[\|/-]|^$'

-vこれにより、正規表現に一致するすべての行 ( )、またはいずれかの文字で始まるすべての行 ( ) \|/-、または完全な空行 ( )が削除されます^$


編集: cronjob をフィルタリングしたい場合は、以下を使用します。

@reboot /path/to/sync.sh -batch 60 2>&1 | grep -vE '^[\|/-]|^$' >> /path/to/logfile

関連情報