2011-01-19 12 views
0

処理しなければならない大きなログファイルがあります。 1週間後、新しいものを手に入れます。新しい行(ログ)が追加されても同じです。ファイルの行を追加するシェルスクリプト

新しい追加ラインが必要です。

どうすればよいですか?

編集:私は今のところsedを試してみたが、

答えて

1

diff成功していない変更が追加、および/または削除された行に制限されている限り、あなたはこれらのファイルの間の任意およびすべての違いを見つけることができるようになります。ほとんどのLinuxディストリビューションでは、GNU diffutilsの一部ですが、ほぼすべてのUinixライクなシステムに存在します。行がログファイルに追加し、私はあなたが古いものを持っていると仮定している場合

+0

面白い私は自分自身でこの解決策には至りませんでした。ありがとう。私は末尾の "<"を自動的に取り除く手段が見つからないので、 "diff file1 file2 | sed s/\ <\ /" "... – faboolous

+0

@fabfile:試してみてください:' diff -old-line '-new-line-format = $'%l \ n ' - changed-group-format ='%> '--unchanged-group-format =' 'log1 log2'(残念ながら、 'sed'を使うよりも冗長で、おそらく移植性はあまりありません)。 –

0

、あなたが試みることができる:

tail -$(($(cat newLogFileName | wc -l)-$(cat oldLogFileName | wc -l))) newLogFileName 
+0

2つのUUoC! 'wc -l <​​filename'を試してください。 –

+0

くそ、私はポストの前に考えるべきではない...少し質問:UUoCsはどういう意味ですか? – Flyounet

0

comm -13 oldfile newfileはあなただけNEWFILEに表示される行を取得します。

+0

状況によっては、ソートされていないファイルについて不平を言うかもしれません。 –

0
# get new.log 
tail -n+$(($(wc -l < old.log)+1)) new.log 
mv new.log old.log 
関連する問題