현재 날짜(awk)

현재 날짜(awk)

awk오늘 날짜를 저장하는 상수 변수가 있나요 ? 그렇지 않은 경우 오늘 날짜를 매일 사용하기 위해 저장하는 방법이 있습니까?

다음과 같은 파일이 있다고 가정해 보겠습니다.

boo,foo,2016-08-30
foo,boo,2016-07-31

$3파일의 날짜를 오늘 날짜와 비교해야 합니다.

즉, 다음 스크립트

awk -F, '{if($3>"2015-08-23"){print $0}}'

2015-08-23현재 날짜로 변경됩니다 .

답변1

표준에는 날짜를 가져오는 내장 함수가 없지만 awk변수에 날짜를 쉽게 할당할 수 있습니다.

awk -F, -v date="$(date +%Y-%m-%d)" '$3>date'

아니면 awk스크립트 에서

BEGIN {
    str = "date +%Y-%m-%d";
    str | getline date;
    close(str);
}
$3>date

gawk, 내장되어 있습니다time functions, 및 strftime사용할 수 있습니다.

gawk -F, 'BEGIN{date=strftime("%Y-%m-%d")}$3>date'

답변2

해결 방법을 사용하십시오 getline.

awk -F, ' BEGIN { "date +%Y-%m-%d" | getline a } { if ( $3>a ) { print 0 }} ' file

답변3

현재 time_t를 얻으려면 srand()를 호출한 다음 t = srand()를 호출하면 됩니다.

$ awk 'BEGIN{srand(); print srand()}'
1440536144

이는 posix가 인수 없이 무작위 함수를 호출하면 현재 시간으로 초기화되고 이전 시드를 반환하도록 요구하기 때문입니다.

답변4

변수를 할당하면 이 작업을 수행할 수 있습니다.

cat /path/to/file | awk -v date="$(date +'%Y-%m-%d')" -F, '{if($3>date){print $0}}'

관련 정보