awk 문에서 변수 사용

awk 문에서 변수 사용

파일이 있고 두 개의 새 파일의 일부 열을 일부 교체하고 있습니다. 지금은 잘 작동합니다.

"X"(열의 문자를 대체하는 데 사용) 및 "\036" 구분 기호, $13, $6, $10, $5 등과 같은 선택된 열과 같은 일부 변수를 아래와 같은 구성 파일에 넣고 싶습니다. awk 문을 사용하여 이를 가장 잘 수행하는 방법을 잘 모르겠습니다.

구성:

export FIELD_DELIMITER="\036"
export MASK_COLUMN="$13"
export PRINT_COLUMN="$13, $6, $10, $5"

암호:

awk 'BEGIN{FS=OFS="\036"} {gsub(/./, "X", $13)} 1' $1 > $file_directory'/'$mask_filename$seperation$temp$DATA_SUFFIX
awk 'BEGIN{FS=OFS="\036"} {print$6,$10,$5,$13}' $1 > $file_directory'/'$mask_filename$seperation$temp1$DATA_SUFFIX

답변1

awk매개변수를 사용하여 외부에서 변수를 전달할 수 있습니다 -v. 이를 재사용하여 여러 변수를 전달할 수 있습니다.

예를 들어 스크립트의 첫 번째 줄은 다음과 같습니다.

awk -v FIELD_DELIMITER='\036' -v WIPEOUT_CHARACTER='X' 'BEGIN{FS=OFS=FIELD_DELIMITER} {gsub(/./, WIPEOUT_CHARACTER, $13)} 1' $1 > $file_directory'/'$mask_filename$seperation$temp$DATA_SUFFIX

나는 GNU Awk 4.1.4를 확인했고 "\036"을 ASCII RS(레코드 구분 기호)로 해석했기 때문에 이것이 여러분에게도 효과가 있기를 바랍니다.

관련 정보