awk -F'\t' -vOFS='\t' '{ gsub("CC", "C", $1) ; gsub("AA", "A", $1) ; print }'
Substitua $1
pela coluna que você deseja modificar.
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).
awk -F'\t' -vOFS='\t' '{ gsub("CC", "C", $1) ; gsub("AA", "A", $1) ; print }'
Substitua $1
pela coluna que você deseja modificar.
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
.
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
Tags text-processing awk replace