Usando variáveis na instrução awk

1

Eu tenho um arquivo que estou executando algumas substituições de certas colunas em dois novos arquivos. Funciona bem agora.

Eu queria colocar algumas das variáveis como o "X" (o caractere que eu substituo uma coluna com) e o separador "\ 036", as colunas selecionadas como $ 13, $ 6, $ 10, $ 5, etc em um tipo de arquivo de configuração de como abaixo. Não sei como conseguir isso da melhor maneira com uma declaração awk.

Configuração:

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

Código:

awk 'BEGIN{FS=OFS="6"} {gsub(/./, "X", $13)} 1' $1 > $file_directory'/'$mask_filename$seperation$temp$DATA_SUFFIX
awk 'BEGIN{FS=OFS="6"} {print$6,$10,$5,$13}' $1 > $file_directory'/'$mask_filename$seperation$temp1$DATA_SUFFIX
    
por Defcon 22.03.2018 / 17:53

1 resposta

2

Você pode passar awk variables de fora usando o argumento -v . Você pode usá-lo repetidamente para passar múltiplas variáveis.

Por exemplo, para a primeira linha do seu script:

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

Eu verifiquei o GNU Awk 4.1.4 e está feliz em pegar o "\ 036" e interpretar isso como ASCII RS (separador de registro), então eu esperaria que isso funcionasse para você também.

    
por 22.03.2018 / 18:13