fundindo duas colunas

3

input_file (colunas são delimitadas por tabulações, apenas a coluna 4 contém espaços)

entrada

A B C D;<>X;<>Y 0
C D E F;<>Z;<>X 1

saída

A B C D;<>X;<>Y;<>apple=0
C D E F;<>Z;<>X;<>apple=1

Eu gostaria de mesclar a última coluna de input_file com a segunda última coluna e separar o valor da última coluna com ";" e uma tag "apple=" na segunda última coluna (assim como na coluna número 4 do input_file). Por isso, o output_file tem uma coluna a menos. Também é necessário manter o arquivo de saída de formatação intacto.Como todas as colunas são delimitadas por tabulações, mas os valores na coluna 4 também têm espaços (D; ).

Por isso eu quero manter todos os separadores de campo do arquivo de entrada como tal, só quero mesclar o valor da última coluna no segundo passado com uma tag (apple =). Obrigado

    
por Roli 20.08.2012 / 19:45

2 respostas

1

alterando o último mas um campo e removendo o último campo:

$ awk '{$(NF-1)=$(NF-1)";<>apple="$NF;$NF="";}1' OFS="\t" file
    
por 20.10.2012 / 11:26
1

A maneira mais fácil é provavelmente com awk :

awk 'BEGIN {FS=OFS="\t"} { $4 = $4 ";<>apple="$5; print $1, $2, $3, $4 }'

O bloco BEGIN garante que essa guia seja usada como separador de campo de entrada e também como separador de saída.

    
por 21.08.2012 / 10:32

Tags