ログファイルの行からの入力を昨日の日付と比較しようとしていますが、その差が1日以上であれば、ログファイルからの行。bash:日付なしのSolarisで2つの日付を比較する方法-dオプション
ログファイル:
$more ActiveX2Alarms.log
2016-09-30 01:40:14 MET;faultManager:[email protected][email protected]@[email protected]@[email protected]|alarm-2632-3-698;ET_AO_L_0165_abcde;major;2632
;lte.IK4009022;3;698
2016-11-01 08:10:51 MET;faultManager:[email protected][email protected]@[email protected]@[email protected]|alarm-2632-3-698;ER_AO_L_4283_abcde;minor;2632;lte.IK4009022;3;698
2017-01-03 12:14:31 MET;faultManager:[email protected][email protected]@[email protected]@[email protected]|alarm-2632-3-698;EM_AO_L_4065_
abcde;minor;2632;lte.IK4009022;3;698
私はCygwinを使用してWindows上でテスト環境を作成しました。 Cygwinでは、私はo/pに成功しました。ここで
私が使用した最初のコードです:
awk -v d="$(date -d "yesterday" +'%Y-%m-%d %H:%M:%S')" '$1 " " $2 < d' /cygdrive/f/Script_X2/Final/Last_Trial/ActiveX2Alarms.log
結果:
2016-09-30 01:40:14 MET;faultManager:[email protected][email protected]@[email protected]@[email protected]|alarm-2632-3-698;ET_AO_L_0165_abcde;major;2632
;lte.IK4009022;3;698
2016-11-01 08:10:51 MET;faultManager:[email protected][email protected]@[email protected]@[email protected]|alarm-2632-3-698;ER_AO_L_4283_abcde;minor;2632;lte.IK4009022;3;698
しかし、私はエラーを受け取ったメインサーバ上で同じコマンドを使用して:
date: illegal option --d
検索を私はそれがインストールされたSolarisパッケージ
0に関連していることを理解したエラーのために$uname -a
SunOS xxxxxx 5.10 Generic_150400-15 sun4u sparc SUNW,SPARC-Enterprise
$date --version
date: illegal option -- version
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
$date --help
date: illegal option -- help
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
私はこの問題を避けるために次のコードを使用しましたが、出力を出すわけではありません...何かが間違っているので、助けてください! YESTERDAY変数の割り当てを確認するために
$awk -v YESTERDAY="`TZ=GMT+20 date +'%d-%m-%Y %H:%M:%S'`" '$1 " " $2 < YESTERDAY' ActiveX2Alarms.log
awk: syntax error near line 1
awk: bailing out near line 1
$/usr/xpg4/bin/awk -v YESTERDAY="`TZ=GMT+20 date +'%d-%m-%Y %H:%M:%S'`" '$1 " " $2 < YESTERDAY' ActiveX2Alarms.log
$
が成功した:
$YESTERDAY="`TZ=GMT+20 date +'%d-%m-%Y %H:%M:%S'`"; echo $YESTERDAY
02-01-2017 16:51:26
エラーメッセージ 'awk:1行目付近に構文エラーがあります。 awk:1行目に近づくと、古いawk(Solarisでは/ usr/bin/awk)が呼び出されます。そのawkを絶対に使わないでください。 Solarisでは、2番目の例のように/ usr/xpg4/bin/awkを使用するか、GNU awk(Cygwinで使用しているもの)をインストールしてください。独自の組み込み時間関数を持っていますので、 'date'と一緒に。 –
Solaris 11以降の場合、 '-d'オプションをサポートするGNUの日付を使用することができます。これは、 'date'コマンドの代わりに' gdate'コマンドを使うことを意味します。以前のSolarisの場合は、積極的にGNU coreutilsパッケージ(GNU日付を含む)をインストールする必要があります。 – peterh