bash + grep 出力専用タイムスタンプ

bash + grep 出力専用タイムスタンプ

sshpassコマンドではなく出力から時間をキャプチャしたいです。

期待される出力

Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019

しかし、コマンドで次のようになります。

sshpass -p customer pssh  -H   "presto01 presto02 presto03"  -l root -A -i "date"  | grep '[0-9][0-9]:[0-9][0-9]:[0-9][0-9]'
[1] 12:45:45 [SUCCESS] presto01
Sun Jul 14 12:45:45 UTC 2019
[2] 12:45:45 [SUCCESS] presto03
Sun Jul 14 12:45:45 UTC 2019
[3] 12:45:45 [SUCCESS] presto02
Sun Jul 14 12:45:45 UTC 2019

私たちができること

sshpass -p customer pssh  -H   "presto01 presto02 presto03"  -l root -A -i "date"  | grep '[0-9][0-9]:[0-9][0-9]:[0-9][0-9]' | grep -v "^\["
Sun Jul 14 12:50:24 UTC 2019
Sun Jul 14 12:50:24 UTC 2019
Sun Jul 14 12:50:24 UTC 2019

しかし、これは醜い方法です

ベストアンサー1

他の時間帯が気になる場合は、その回線の時間部分が最も安定しているはずです。たぶん月と曜日の名前を見つけるのは安全ではないかもしれません。

編集:IPアドレスと同様の部分と一致しないようにパターンをより正確にしました(パターンは数字やコロンの前後に一致しない可能性があります)。

したがって、時間を把握しようとすると、次のようにすることができます。

grep "\([^[^0-9:]\|^\)[0-9]\{1,2\}\(:[0-9]\{2\}\)\{2\}\([^[^0-9:]\|$\)"

一部のテストデータは上記のとおりです。

grep "([^[^0-9:]\|^)[0-9]{1,2}(:[0-9]{2}){2}([^[^0-9:] \|$)" << END Sun Jul 14 12:47:49 UTC 2019 一部のメッセージのアドレスは 01:11:91:05 Sun Jul 14 12:47:49 UTC 2019 01:11:91:05 です。住所が正しくありません。 123:23:03 1:3:43でもなく、彼の12:33:27でもありません。 2019年7月14日日曜日12:47:49 UTC END

次のように出力されます。

Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019
Sun Jul 14 12:47:49 UTC 2019

3つの数値部分が必要です。:最初の数字部分は1〜2桁、残りの2つの数字部分は2桁でなければなりません。

おすすめ記事