답변:
이러한 상황에 대한 일반적인 트릭은 제곱근을 사용하는 것입니다.
awk -F'[-,]' '{print sqrt((360*($4-$1)+30*($5-$2)+($6-$3))^2)}'
sqrt(x^2)
.
늦었지만, 여기에 date
게시 된 모든 답변이 그것을 고려한 steve의 답변으로 매달 고정 된 30 일을 기반으로하는 GNU 명령을 사용하는 솔루션 이 있습니다.
awk -F, '{cmd="printf \"%d\n\" $((($(date -d"$1" +%s)-$(date -d"$2" +%s))/86400))";
cmd|getline $0; $0*=($0<0?-1:1); close(cmd)}1' infile
아래 입력의 경우 :
2015-09-12,2015-08-13
2017-02-12,2017-03-12
출력은 다음과 같습니다.
30
28
sqrt(x^2)
괜찮지 만sqrt(x)^2
놀라움을 일으킬 수 있습니다 작은 오류가 발생할 수 있습니다. busybox의awk
경우 수학 지원이 활성화 된 상태로 빌드해야합니다 (예 : 데비안 패키지의 기본값이 아님).