헤더 및 트레일러 검증

헤더 및 트레일러 검증

저는 UNIX를 처음 접했고 head이에 대한 도움과 검증이 필요합니다 tail. data.txt다음 데이터가 포함된 텍스트 파일이 있습니다 .

H,20200701
SK
MK
3

여기서 제목에는 날짜가 포함되고 예고편에는 파일에 있는 줄 수가 포함됩니다.

헤더에 현재 날짜가 있는지 확인하고 트레일러에 올바른 레코드 수가 있는지 확인하는 셸 스크립트를 만들어야 합니다.

답변1

내 가정에 따르면 이것이 당신이 원하는 것입니까?

awk -F"," -v dt=$(date +'%Y%m%d') 'FNR==1{ dte=$2; } { l=$0;} 
END { if ( dte==dt && (FNR-1)==l ) print "Yes"; else print "No" } ' data.txt

편집하다:

-F"," => 필드 구분 기호를 "," 쉼표로 설정합니다.

-v dt=$(date +'%Y%m%d')=> unix 명령을 실행하여 파일에 언급된 형식으로 현재 날짜를 가져와 "dt" 변수에 저장합니다.

NR==1{ dte=$2; } => 줄 번호가 1이면 파일에 두 번째 필드(날짜)를 저장합니다.

{ l=$0;} => 각 행을 "l"이라는 변수에 저장합니다. (이 방법으로 마지막 줄이 나올 때 파일의 마지막 줄을 "l"에 저장합니다.)

END { if ( dte==dt && (NR-1)==l )=> END 블록에서(모든 라인을 구문 분석한 후 변수 "dte"가 "dt"(이전 라인의 date 명령 출력 및 파일의 날짜 값)와 같은지 확인하고 마지막 라인이 "l"은 총 레코드 수(NR)에서 1을 뺀 것과 일치합니다. 둘 다 일치하면 yes else No를 인쇄합니다.

관련 정보