2017-10-14 9 views
0

안녕하세요 저는 파일에서 특정 정보를 검색하고 인쇄하는 스크립트를 만들려고합니다. 내 경우는 다음과 같습니다 : id|lastname|firstname|birthday| 형식의 파일이 있습니다. 스크립트를 호출하고 데이트 인자와 파일을 주면 주어진 날짜 이후에 태어난 모든 "사람들"을 보여 주려고합니다. 내가 당신에게 내 코드를 보여 드리죠 :awk 쉘에서 날짜 비교하기

#!/bin/bash 
case $1 in 
--born-since) 
d=($2 +%F); # this one puts the date I've given into the variable d 
grep -vE '^#' $4 | awk -F "|" ' $4 >= $d ' 
;; 
esac 

을 나가의 형태로이 스크립트를 호출

./script --born-since <date> -f <file> 

포인트는 내가하고 싶은 일을하지 것입니다. 잘못된 결과를 인쇄합니다. 예를 들어, 날짜가 4 개인 파일 (1989-12-03, 1984-02-18, 1988-08-10-14, 1980-02-02)에서 1985-05-13의 날짜를 사용하면 1984-02-18 날짜가 잘못되었습니다. 아마도 날짜가 아닌 다른 것을 비교하고있을 것입니다. 어떤 충고 ? 단일 AWK 과정

+0

그래 내 나쁜, 그것은 몇 가지 입력 라인 –

+0

게시물을 편집, 그것은 다른 항목에서 너무 많은 다른 결과가, 그러므로 내가 조금 혼란 가지고있어, 잘못 모든 것 fields – RomanPerekhrest

답변

0

:

awk -v d="1985-09-09" -F'|' '$4 >= d' file 
+0

날짜가 같지 않아도 작동합니다. 그래도 시도해 볼 수 있기 때문에 고맙습니다. 하나의 명령어로 두 가지 다른 날짜를 비교해 볼 수 있습니까?) –

+0

@DimitrisDelis, 가능합니다. – RomanPerekhrest