2017-08-08 24 views
0

ログファイルの文字列を検索し、行数を数えるためには小さなスクリプトが必要です。これは私がかかることがありますので、私はまた、コンソールに表示された "grep"の出力が欲しいです。私の考えは次のようなものです:コンソールとファイルへのBashスクリプトの出力

grep -irl "System out of memory" | tee /tmp/checkoom.tmp 
COUNT=(cat /tmp/checkoom.tmp |wc -l) 
echo $COUNT logs found. 

しかし、それは動作しません。私はどんな出力も得られません、tmpファイルは作成されますが、空であるようです。

答えて

0

あなたが検索あちこち開始ディレクトリを提供するのを忘れ:

echo "$(grep -i '/lib/udev/usb' /var/log/messages > ~/yourFile ; cat ~/yourFile | wc -l) logs found" 

は、あなたがそれを見つけることを願って:ここで

grep -irl "System out of memory" <somewhere> | tee /tmp/checkoom.tmp 
0

はは/ var/log/messagesにからUSBレコードを取得するための1つのライナーです便利な

+0

はい、私はgrepからの出力を得ません。 – Kjellson

0

スクリプトに間違いが2つあります。

  • grepへのパス
  • $()を使用してコマンドを実行します。

    #!/bin/bash 
    grep -irl "System out of memory" <path to search> | tee /tmp/checkoom.tmp 
    COUNT=$(cat /tmp/checkoom.tmp | wc -l) 
    echo "$COUNT" logs found. 
    

    また、あなたはgrepの中に-Fオプションを使用することができます。これは、変数COUNT

更新されたスクリプトを割り当てるときに追加する必要があります。 -Fは固定文字列を表します

+0

奇妙なことに、それはまだ動作しません。もし私がgrepコマンドを| tee、evrythingはうまくやっています... – Kjellson

+0

これは通常の場合に有効です。 "find"を使ってみてください。 Butgrepは正しいオプションです:) コマンドを使用してみてください>> #find <検索するパス> -type f -exec grep -irl "システムがメモリ不足" {} \; > /tmp/checkoom.tmp –