파일에서 14일보다 오래된 날짜를 찾는 Grep

파일에서 14일보다 오래된 날짜를 찾는 Grep

14 days다음보다 오래된 메시지 수에 대해 파일을 grep 하고 결과 수를 반환하는 값을 갖는 방법을 찾으려고 합니다.

오늘 날짜를 예로 들어보겠습니다 20160616. $grep 'Put Date' filename:

Put Date     :'20160425'
Put Date     :'20160501'
Put Date     :'20160514'
Put Date     :'20160609'
Put Date     :'20160610'
Put Date     :'20160616'

결과는 다음과 같이 표시되어야 합니다. 14일이 넘었으며 다음과 같은 내용이 표시됩니다 return 3.

Put Date     :'20160226'
Put Date     :'20160501'
Put Date     :'20160514'

답변1

당신이 사용할 수있는:

awk -v threshold=$(date "--date=$(date) -14 day" +%Y%m%d) -F "'" '$2 < threshold' filename | wc -l

이는 다음의 솔루션과 유사합니다.이 게시물날짜가 인라인으로 계산된다는 것뿐입니다.

노트: filename이름으로 바꿔야 함당신의 파일.

또한 경계 날짜 규칙에 주의해야 합니다(경계 조건 확인).

답변2

awk솔루션이 게시되었으므로 grep다음을 기반으로 솔루션을 만들 것입니다.

먼저, 보고 싶지 않은 날짜를 한 줄에 하나씩 포함하는 파일을 만듭니다. 여기에는 항목이 15개뿐이므로 많은 처리가 필요하지 않고 빠릅니다. 다음에는 date내 [BSD] 시스템에 다음과 같이 설치된 GNU가 필요합니다 gdate.

i=0
while (( i < 15 )); do
    gdate -d "now -$(( i++ )) days" +"%Y%m%d"
done >dates_to_skip

완료되면 간단히 다음 항목에 대한 필터로 사용할 수 있습니다 fgrep -v.

fgrep -v -f dates_to_skip mydata

관련 정보