日付コマンドの結果をgrepに入力して他のコマンドの結果をフィルタリングする方法

日付コマンドの結果をgrepに入力して他のコマンドの結果をフィルタリングする方法

フォーマット日付コマンド(日付+ "%m / % d")の結果をgrepフィルタとして使用して、システムに警告を表示する他のコマンドの結果をフィルタリングする必要があります。与えられた日付アラーム。

Alertcommandがコンソールに警告読み取り値を提供するとします。alertcommand | grep 8/10今日のログを取得できることを知っていますが、date +"%m/%d"実行するたびに日付を指定する必要がないように入力できるようにしたいのですが、それをコマンドにリンクする方法がわかりません(できるだけ生成せず)。顧客のハードウェアで実行されるため、一時ファイルまたは何でも可能)。

私が探していますこの質問は次のようになります。しかし、同じ方法で動作させる方法はわかりません。

答え1

Bashでは、次のようなものを使用してください。alertcommand | grep $(date +"%m/%d")

$()サブシェルでコマンドを実行し、コマンドの出力を文字列として返します。あるいは、コマンドをバックティックで囲んで同じ効果を得ることもできます。

答え2

単純に、dateコマンドの出力を別の変数に割り当て、それを引数として使用できます。

myDateVariable=`date +"%m/%d"`
alertcommand | grep $myDateVariable

これにより、後で日付値を再利用し、中間ステップをデバッグできます。

答え3

FreeBSDのシェルcshでは、あなたの方法の1つを使用することはできません。

1)

cat /var/log/exim/mainlog | grep $(date +%Y-%m-%d)
Illegal variable name.

2)

d=`date +%Y-%m-%d`;cat /var/log/exim/mainlog|grep $d
d=2011-11-13: Command not found.

しかし、次のようにバックティックコードを直接使用できます。

cat /var/log/exim/mainlog | grep `date +%Y-%m-%d`

関連情報