grepコマンドを使用してログディレクトリを検索するスクリプトがあります。以下はそのコマンドです。シェルスクリプトのToとFROMの間のUNIXでのログの検索
export CMD="grep -ie '.*${RUN_DATE}.*${MESSAGE_TO_SEARCH}' ${LOG_FILE_PATH}/${LOG_FILE} | awk -F 'addInfo' '{print \$2;}' | sed '/^$/d'"
ここで、RUN_DATEはスクリプトの実行日です。
MESSAGE_TO_SEARCHは、ログファイル内で検索しているメッセージです。
スクリプトを開始する前に宣言されています。
私は例えばのために、それはTOの間と時間から、検索するというスクリプトを変更したい:
FROM_TIME = 2016年8月28日13時30分00秒と
TO_TIME = 2016年8月29日17:00:00
したがって、スクリプトはこの時間内にあるログのみを提供する必要があります。
私は正規表現として渡す日付を使って次のように試しましたが、動作しませんでした。
export CMD="grep -ie '.*[${FROM_DATE}-${TO_DATE}].*${MESSAGE_TO_SEARCH}' ${LOG_FILE_PATH}/${LOG_FILE} | awk -F 'addInfo' '{print \$2;}' | sed '/^$/d'"
正しい方法をお勧めします。ありがとう
EDIT1:正規表現が適切でない場合、これを行う方法を教えてください。
コマンドを変数に格納しないでください。あなたはそれを使用するためにevalを使う必要があります。 – anishsane
私は例を示すことができます –
正規表現は、日付の範囲と一致するための最良のツールではありません。スクリプトでログファイル名を解析する方が良いでしょう。 [ここに例がある](http://stackoverflow.com/questions/6839987/regular-expression-for-a-date-range)正規表現がどのように複雑になるかを示す日付 – Aserre