Como substituir o conteúdo da coluna específica por awk? Arquivo Delimitado por Tabulação

1

Aqui está uma pergunta semelhante, mas me deparei com um problema que não foi abordado na pergunta. Como substituir o conteúdo de uma coluna específica por awk?

Eu quero fazer algo semelhante, mas meu arquivo é delimitado por tabulações em vez de delimitado por espaço. Eu quero mudar o campo 3. Vamos dizer que meu arquivo é assim:

NAME\tNUMBER\tID\tSEQ\t...\t...\t... 

Digamos que eu queira mudar o campo 3 para o AD

awk '{$3 = "AD"; print}' infile > outfile

minha saída é

NAME\tNUMBER\tAD SEQ ... ... ... ... ... ...

minhas guias se transformam em espaços após a substituição Tenho certeza de que posso apenas tr do arquivo de saída, mas quero saber o que faz com que awk altere o delimitador de campo.

resultado esperado:

NAME\tNUMBER\tAD\tSEQ\t...\t...\t...\t
    
por adrotter 24.07.2015 / 02:07

1 resposta

0

Você precisa definir O utput F ield S eparator, na guia \t :

Uma maneira de fazer isso é com a opção -v :

awk -vOFS='\t' '{$3 = "AD"; print}' file

outra possibilidade dentro de awk , digamos no bloco BEGIN:

awk 'BEGIN{OFS="\t"}{$3 = "AD"; print}' file

Se você não definir OFS , por padrão, awk usará espaço único como separador de campo.

    
por 24.07.2015 / 02:14