Incompatibilidade de colunas e substituição

4

input.txt (delimitado por tabulação)

TTTTOTTT00000000008  RTTTT899      5.00E-28
TTTTOTTT00000000046  RTTTWRR       3.00E-31
TTTTOTTT00000000051  2.00E-11
TTTTOTTT00000000051  7.00E-12
TTTTOTTT00000000054  5.00E-22
TTTTOTTT00000000061  YTRYR         1.00E-11
TTTTOTTT00000000078  ETNRR8        6.00E-17
TTTTOTTT00000000174  TYTYT         1.00E-11
TTTTOTTT00000000203  UUUE          9.00E-20

Eu tenho arquivo com coluna misturada. Neste arquivo (input.txt). A coluna 3 tem espaço em branco, a coluna deve preencher com colunas2 linhas e colunas 2 linhas devem ser substituídas como nenhuma

output.txt (delimitado por tabulação)

TTTTOTTT00000000008  RTTTT899      5.00E-28
TTTTOTTT00000000046  RTTTWRR       3.00E-31
TTTTOTTT00000000051  none          2.00E-11
TTTTOTTT00000000051  none          7.00E-12
TTTTOTTT00000000054  none          5.00E-22
TTTTOTTT00000000061  YTRYR         1.00E-11
TTTTOTTT00000000078  ETNRR8        6.00E-17
TTTTOTTT00000000174  TYTYT         1.00E-11
TTTTOTTT00000000203  UUUE          9.00E-20
    
por jack 23.08.2012 / 20:16

2 respostas

8
awk -v 'OFS=\t' 'NF == 2 { print $1, "none", $2; next } 1' input.txt > output.txt

Ajuste dependendo das características do seu arquivo de entrada. Eu suponho que cada linha com apenas 2 campos deve ter um "nenhum" inserido. Caso contrário, todas as outras linhas passarão inalteradas (a finalidade do 1 no final).

    
por 23.08.2012 / 20:20
2
awk -v OFS="\t" 'NF==2{$2="none\t"$2}1' test_in.txt

Em vez de ter uma instrução de impressão separada para a linha modificada, isso corrige os campos onde necessário e transmite as linhas corrigidas para serem impressas pela mesma instrução.

    
por 27.08.2012 / 08:35