awk는 조건부로 대용량 파일을 여러 출력 파일로 분할합니다.

awk는 조건부로 대용량 파일을 여러 출력 파일로 분할합니다.

90GB 파일을 조건부로 여러 파일로 분할해야 합니다(해당 파일은 다중 테이블 파일이고 단일 테이블로 분할됩니다).

나는 ksh 및 awk에서 테이블 규칙을 반복하고 awk를 사용하여 출력 파일에 인쇄할지 여부를 선택하는 솔루션을 만들었습니다. 문제는 29개의 규칙에 대해 소스 파일(90GB)을 29번 읽어야 한다는 것입니다.

소스 파일을 한 번에 읽고 조건부로 하나 또는 다른 출력으로 리디렉션하여 여러 파일에 쓸 수 있습니까?

답변1

당신은 그것을 사용할 수 있습니다리디렉션(POSIX에 의해 지정되었으므로 다른 awks와도 작동해야 합니다). 간단한 예:

$ awk '$1 % 2 {print > "odd"; next} {print > "even"}' <(seq 1 10)
$ tail -n +1 odd even                                            
==> odd <==
1
3
5
7
9

==> even <==
2
4
6
8
10

따라서 29개의 파일 이름으로 구성된 배열을 만들거나 변수( 는 카운터임)를 사용하여 구성할 수 print > "filenum" n있습니다 n.

관련 정보