Reemplazar una cadena de prueba con otra columna en particular

Reemplazar una cadena de prueba con otra columna en particular

Me gustaría reemplazar "CC" con "C" y "AA" con A" en una columna particular del archivo delimitado por tabulaciones (usando awkprobablemente).

Respuesta1

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

Reemplace $1con la columna que desea modificar.

Respuesta2

Si no tenía acceso a gsub(), pero sí lo tiene split(), puede simplemente crear el equivalente de la siguiente manera:

Dada la entrada

AA      AA      CC      CC      AA      CC

el siguiente awkguión

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;
}

produciría los resultados deseados para los campos 1, 3 y 5:

A       AA      C       CC      A       CC

Incluso sin él, split()es posible si desea codificar las matrices Fieldsy Replacementsen el BEGINbloque.

Respuesta3

Para buscar y reemplazar en un campo use este comando:

sed 's/whatyouwanttofind/whatyouwanttoreplace/field#'

es decir, te haces eco de esto:

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

1are,2are,3are,4are

5are,6are,7are,8are

y quieres hacer esto

$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

información relacionada