![이러한 명령이 다른 출력을 생성하는 이유는 무엇입니까?](https://linux55.com/image/89863/%EC%9D%B4%EB%9F%AC%ED%95%9C%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EB%8B%A4%EB%A5%B8%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
텍스트 줄에서 Linux 타임스탬프를 얻으려고 합니다. 명령을 사용하여 cut
문자열을 잡을 수 있습니다
> echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41
2016-07-04T01:42:28Z
이제 date를 호출할 때 해당 날짜 문자열을 직접 사용하면 Linux 타임스탬프를 얻을 수 있습니다.
> date +"%s" --date 2016-07-04T01:42:28Z
1467596548
그러나 명령 결과를 command 에 파이프하면 다른 결과가 나타납니다 cut
.date
> echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41 | date +"%s" --date -
1467590400
결과가 다른 이유는 무엇입니까?
답변1
date --date -
표준 입력을 허용하지 않습니다. date +"%s" --date "$(echo '"tester_row_____",0,"2016-07-04T01:42:28Z","2016-07-04T02:00:58Z"' | cut -c 22-41)"
이것을 시도해 보십시오. 이것은 서브쉘에서 문자열 조작 파이프를 실행하고 그 출력을 date
.