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}}'