Substituindo uma cadeia de teste por outra na coluna particular

0

Eu gostaria de substituir "CC" por "C" e "AA" por A "em uma coluna específica do arquivo delimitado por tabulação (usando awk provavelmente).

    
por alex 14.06.2012 / 12:08

3 respostas

5

awk -F'\t' -vOFS='\t' '{ gsub("CC", "C", $1) ; gsub("AA", "A", $1) ; print }'

Substitua $1 pela coluna que você deseja modificar.

    
por 14.06.2012 / 12:14
0

Se você não tiver acesso a gsub() , mas tiver acesso a split() , poderá criar o equivalente dessa forma:

Dada a entrada

AA      AA      CC      CC      AA      CC

o seguinte script awk

BEGIN {
    OFS = "\t";
    split("1 3 5", Fields);
    split("A C", Replacements);
}
{
    for (i in Fields) {
        for (j in Replacements) {
            Replace = Replacements[j];
            sub(Replace Replace, Replace, $Fields[i]);
        }
    }
    print;
}

produziria os resultados desejados para os campos 1, 3 e 5:

A       AA      C       CC      A       CC

Mesmo sem split() , é possível que você queira codificar os arrays Fields e Replacements no bloco BEGIN .

    
por 17.03.2014 / 07:21
0

Para localizar e substituir em um campo, use este comando:

sed 's/whatyouwanttofind/whatyouwanttoreplace/field#'

i.e. você faz eco disso:

$echo -e "1are,2are,3are,4are\n5are,6are,7are,8are"

1are,2are,3are,4are

5are,6are,7are,8are

e você quer fazer isso

$echo -e "1are,2are,3are,4are\n5are,6are,7are,8are" |  sed 's/are/arrr/2'

1are,2**arrr**,3are,4are

5are,6**arrr**,7are,8are
    
por 09.12.2015 / 19:00