“2014-01-30 05:04:27 GMT”와 같은 날짜가 있고 date -d “2014-01-30 05:04:27 GMT”를 실행하면 출력이 서버의 시간대 ( “Thu 1 월 30 일 16:04:27 EST 2014 “).
grep 및 cut을 사용하여 파일에서 GMT의 날짜를 추출했습니다. 그러나 나는 이것을 현지 시간으로 변환하려고 애 쓰고 있습니다.
예를 들면 다음과 같습니다.
[user @ server log] # grep “something”logfile.txt | grep “성공”| 컷 -f1 -d ‘[‘
출력 : 2014-01-30 05:04:27 GMT
결과를 “date -d”로 전달하기 위해 끝에 무엇을 추가 할 수 있습니까?
시도 :
- [user @ server log] # grep “something”logfile.txt | grep “성공”| 컷 -f1 -d ‘[‘| 날짜 -d
- [user @ server log] # grep “something”logfile.txt | grep “성공”| 컷 -f1 -d ‘[‘| 데이트
- [user @ server log] # grep “something”logfile.txt | grep “성공”| 컷 -f1 -d ‘[‘| 날짜 -d “$ 1”
답변
gmt="$(grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[')"
date -d "$gmt"
또는 파이프 라인 형식을 선호하는 경우 :
grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[' | { read gmt ; date -d "$gmt" ; }
문제는 date
stdin을 사용하지 않는다는 것입니다. 따라서 stdin을 변수 ( gmt
여기에서 호출 ) 로 캡처 한 다음 명령 행에이를 제공해야 date
합니다.
두 번째 접근 방식의 샘플 출력 :
$ echo "2014-01-30 05:04:27 GMT" | { read gmt ; date -d "$gmt" ; }
Wed Jan 29 21:04:27 PST 2014
답변
충분히 최근의 coreutils에서 GNU 날짜를 사용하는 date -f
경우 도움말 화면에 있습니다.
-f, --file=DATEFILE like --date once for each line of DATEFILE
따라서 귀하의 시도 4는 다음과 같습니다.
$ grep "something" logfile.txt | grep "Succeeded" | cut -f1 -d'[' | date -f -
마지막 -
은 stdin을 나타냅니다.