文字列に一致するファイルの最後の行を探しますか? [閉鎖]

文字列に一致するファイルの最後の行を探しますか? [閉鎖]

ファイル内で無限に実行されるループが必要ですが、常に最後の行に一致する文字列が含まれていることを確認し、一致する文字列がある場合はその行をエコーし​​てループを実行し続けます。今持っているのはうまくいきません。 grepエラーが発生します。

#! /bin/bash

echo "Script is starting......."
FILE="/Users/shubhamsinha/Desktop/new_test.log"
# (tail -n1) < FILE
STRING="MYNAME"
while : ;do
    Last = tail -F "$FILE"
    grep -q "$STRING" "$Last" && echo "FOUND" && break
    sleep 5
done

ベストアンサー1

スクリプトの作成を気にしないでください。これにはスクリプトではなく行が必要です。

新しいツールを作成するのではなく、既存のツールを活用して必要な作業を実行してください。

コマンドラインに次のように入力します。

tail -f -n 1 /Users/shubhamsinha/Desktop/new_test.log | grep MYNAME

説明する:

tail -f指定されたファイルで永久に実行され、ファイルに追加された各追加行を出力します。

-n 1つまり、tail起動時にファイルのデフォルトの最後の10行ではなく、現在のファイルの最後の行のみが出力されます。

|パイプラインだ。パイプを理解していない場合は、すべてを捨ててパイプを理解するまで、より多くのシェルスクリプトを作成しないでください。 (長い時間はかかりませんが、批判的良いスクリプトを書いてください。 )

grep MYNAME入力にMYNAMEパターンを含む行のみを印刷します。

おすすめ記事