2010-04-08 5 views
0

매월 4 개 또는 5 개의 텍스트 파일이 만들어집니다. 파일의 데이터는 MS Access로 가져 와서 메일 병합에 사용됩니다.for 또는 while 루프 사용

각 파일에는 헤더가 있습니다. | 0000000130 | 0000527350 | 0000171250 | 0000058000 | 0000756600 | 0000814753 | 0000819455 | 100,106

제 2 필드 (헤더 행 제외) 파일에 포함 된 레코드의 수는 HEADER :이 예입니다. 마지막 필드는 yymmdd 형식의 날짜입니다.

gawk (Windows의 경우)를 사용하여 데이터를 재정렬/수정하고 다음을 제외한 Access로 가져 오기 위해 새 파일에 모두 쓰는 것이 좋습니다.

각 레코드마다 고유 한 ID 번호를 만들려고합니다. ID 번호의 형식은 1mmddyyXXXX입니다. 여기서 XXXX는 앞에 오는 0이 채워지는 숫자입니다. 위의 헤더를 사용하면 출력 파일의 첫 번째 레코드는 ID 번호가 10106100001이고 마지막 레코드가 ID가 10106100130이됩니다.

헤더의 두 번째 필드를 변수에 넣고 마지막으로 헤더 필드를 필요한 날짜 형식으로 변환 한 다음 "for"문으로 반복하여 ID의 XXXX 부분을 추가 한 다음 printf를 사용하여 출력합니다. 그러나 지금까지는 완전히 쓰레기가되었습니다.

도움 주셔서 감사합니다. 게리

답변

2

"-F |"옵션을 사용하여 awk (1)을 호출하십시오. 식별자를 설정하려면 다음 문을 사용하십시오. id = sprintf ("1 % 02d % 02d % 02d % 04d", substr ($ 9,3,2), substr ($ 9,5,2), substr ($ 9,1 , 2), NR)

+1

헤더 레코드를 계산하지 않으므로 'NR - 1'입니다. –

+0

둘 다 감사합니다! 늘 그렇듯이, 나는 그 해결책을 그 때보다 더 어렵게 만들고있었습니다. – Gary