
Gostaria de substituir "CC" por "C" e "AA" por A" em uma coluna específica do arquivo delimitado por tabulação (usando awk
provavelmente).
Responder1
awk -F'\t' -vOFS='\t' '{ gsub("CC", "C", $1) ; gsub("AA", "A", $1) ; print }'
Substitua $1
pela coluna que você deseja modificar.
Responder2
Se você não tinha acesso gsub()
, mas tem acesso split()
, você poderia simplesmente criar o equivalente assim:
Dada a entrada
AA AA CC CC AA CC
o seguinte awk
roteiro
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()
isso, é possível se você quiser codificar os arrays Fields
e Replacements
no BEGIN
bloco.
Responder3
Para localizar e substituir em um campo, use este comando:
sed 's/whatyouwanttofind/whatyouwanttoreplace/field#'
ou seja, você ecoa isso:
$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