AWK는 레코드를 인쇄하여 파일을 열별로 구분하고 비어 있는 경우 열을 값으로 바꿉니다.

AWK는 레코드를 인쇄하여 파일을 열별로 구분하고 비어 있는 경우 열을 값으로 바꿉니다.

큰 파일을 첫 번째 열 값으로 나누고 해당 열이 Null인 경우 Null 값을 값으로 바꾸고 해당 오류 레코드에서 파일을 만들어야 합니다. 나는 다음과 같은 것을 시도했습니다

awk -F'|' '{print match($1,/^ /) > $1 : "BAD"} $FILENAME

그러나 물론 그것은 작동하지 않습니다.

A|123|zxy
B|321|zyx
|345|abc
A|456|zys

3개 파일 생성: A, BBAD

답변1

awk -F '|' '{ fname = $1 ? $1 : "BAD"; print >fname }' file

fname변수가 있으면 첫 번째 열의 값으로 설정되고 , 그렇지 않으면 로 설정됩니다 BAD. 그러면 해당 파일 이름으로 행이 인쇄됩니다.

당신이 가지고 있다면많은첫 번째 열의 값이 다른 경우 print파일 설명자가 부족해지는 것을 방지하기 위해 각 명령문 사이의 출력 파일을 닫아야 할 수도 있습니다.

awk -F '|' '{ fname = $1 ? $1 : "BAD"; print >>fname; close fname }' file

이제 파일을 추가 모드로 열어야 한다는 점에 유의하세요 >>.

관련 정보