[解決済み] date: 余分なオペランド %d' エラー
2022-02-18 18:40:17
質問内容
以下のような形式のテキストログファイルがあります。
Thread-28689296: Thu Aug 25 15:18:41 2016 [ info ]: xxxxx xxxxxx xxxxx
そこで、過去数分間に特定のエラーメッセージを見つけるために、cronジョブを実行したいと思います。次のコマンドを書きました。
awk -vDate=`date +%b %d %H:%M:%S %Y` -vDate2=`date --date="2 minutes ago" +%b %d %H:%M:%S %Y` '$5 > Date && $5 < Date2' /var/log/dummy.log | grep "Fatal"
上記のコマンドでは、現在から2分前までのタイムスタンプを持つメッセージを、以下の文字列で検索しています。
Fatal
.
しかし、次のようなエラーが発生しました。
date: extra operand %d'
Try date --help' for more information.
date: extra operand %d'
Try date --help' for more information.
dateコマンドを実行すると、以下のような結果が得られました。
date "+%b %d %H:%M:%S %Y"
Aug 25 15:25:01 2016
date --date="2 minutes ago" +"%b %d %H:%M:%S %Y"
Aug 25 15:31:42 2016
ということは、私の awk スクリプトの日付コマンドは大丈夫なはずです。
また、2分間で見つかったエラーメッセージをファイルにリダイレクトし、アラートとしてメール送信したいのですが、まだそこまで至っていません。
私の awk スクリプトのどこが問題なのか、親切にアドバイスしてください。よろしくお願いします。
解決方法は?
ここで問題となるのは
date
そのものです。方法を見てみましょう。
と言っているのですね。
vDate2=`date --date="2 minutes ago" +%b %d %H:%M:%S %Y`
を使いたいからです。
date --date="2 minutes ago" +%b %d %H:%M:%S %Y
しかし、実行してみると、エラーが発生することがわかります。
日付: 余分なオペランド '%d'
詳細は 'date --help'を試してみてください。
問題は、FORMAT コントロールをダブルクォートで囲む必要があることです。
# v v
$ date --date="2 minutes ago" "+%b %d %H:%M:%S %Y"
Aug 25 14:49:31 2016
これが完了すると、あなたの完全な
awk
のワンライナーができる。
awk -v Date="$(date "+%b %d %H:%M:%S %Y")" \
-v Date2="$(date --date="2 minutes ago" "+%b %d %H:%M:%S %Y")" \
'$5 > Date && $5 < Date2' file
を使用していることに注意してください。
-v Date="$(date ...)"
:
-
$( )
はプロセス代替のため バックチック ` はほとんど非推奨ですが、少なくともレガシーと考えられています。 . -
date=" things "
を使用すると、コンテンツにスペースがある場合にエラーが発生するのを防ぐことができます。 -
v var=value
の後に空白を使用しています。-v
からは-vvar=value
はガクに特化したものです。
関連
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] JenkinsでExecute Shellがビルドを失敗とマークする方法/タイミングは?
-
[解決済み] JavaScriptの日付の書式設定方法
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] JavaScriptで日付の書式設定に関するドキュメントはどこにありますか?
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] Androidで現在の時刻と日付を取得する方法
-
[解決済み] Java文字列→日付変換
-
[解決済み】2つのファイルに共通する行を検索するシェルコマンド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AWS cliの変数を置換して、シークレットマネージャーのパスワードを更新する。
-
バッドサブスティチューション
-
[解決済み] ファイル内検索と置換、ファイルの上書きがうまくいかず、ファイルが空になってしまう
-
[解決済み】Bashで複数行のコメントを作成する方法は?
-
[解決済み】コマンドの出力をMakefileの変数に代入する方法
-
[解決済み】ある名前に一致するプロセスをすべて終了させる方法は?
-
[解決済み】シェルスクリプトでコメントをブロック化する
-
[解決済み】シェルスクリプトにコマンドが存在するかどうかを確認するにはどうすればいいですか?重複
-
[解決済み] Ansibleで複数行のシェルスクリプトを実行する方法
-
[解決済み] カンマで区切られたシェル変数をループする