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

세 개의 숫자 부분이 필요합니다. :첫 번째 숫자 부분은 1~2자리이고 나머지 두 개의 숫자 부분은 2자리여야 합니다.

관련 정보