소유권 기록을 복사하여 세부정보에 붙여넣으세요.

소유권 기록을 복사하여 세부정보에 붙여넣으세요.

마지막에 count를 추가한 후 string 데이터 타입의 위치가 바뀌는 것을 관찰하였다.

       awk '$2=="H" {x = substr($3,1,4); next} {$(NF+1) = x} 1'

입력하다:

12      H   0003A 
12305245D   2500 AB   5454 87870001A 
12305245D   2500 ABC  5454 87870002A 
12305245D   2500 ABCD 5454 87870003A

예상 출력:

12      H   0003A 
12305245D   2500 AB   5454 87870001A 0003 
12305245D   2500 ABC  5454 87870002A 0003
12305245D   2500 ABCD 5454 87870003A 0003

실제 출력:

12      H   0003A 
12305245D   2500 AB 5454 87870001A 0003
12305245D   2500 ABC 5454 87870002A 0003
12305245D   2500 ABCD 5454 87870003A 0003

답변1

Set field 구분 기호를 빈 문자열로 사용하여 -F ''각 문자를 별도의 필드로 처리하도록 awk에 지시합니다 . $마찬가지다안 돼요동일합니다 H( $3지정된 하위 문자열을 가질 수 없음). 대신 기본(공백) 구분 기호를 사용하세요.

print $0, x또한 하위 문자열 을 문자열( $0 = $0 x) 로 추가하는 대신 별도의 구분 필드로 추가하려는 것 같습니다.

$ awk '$2=="H" {x = substr($3,1,4)} $2!="H" {print $0, x}' input
12305245D   2500 AB   5454 87870001A  0003
12305245D   2500 ABC  5454 87870002A  0003
12305245D   2500 ABCD 5454 87870003A 0003

단순화된 버전:

$ awk '$2=="H" {x = substr($3,1,4); next} {print $0, x}' input
12305245D   2500 AB   5454 87870001A  0003
12305245D   2500 ABC  5454 87870002A  0003
12305245D   2500 ABCD 5454 87870003A 0003

노트이 답변엄격하게 예약됨입력 필드의 위치: 마지막 열의 가변 간격은 가변 개수의 후행 공백의 결과입니다.귀하가 게시 한 입력에서.

관련 정보