eu tenho um arquivo
had my.file
Ha1_00044012__C 1 51035805 10.35639322
Ha1_00045184__C 1 86676829 10.07929888
Ha1_00045056__C 1 150178524 19.44076068
Ha10_00000491__C 10 73473488 10.6038893
Ha10_00000577__C 10 78976728 12.45451149
Ha10_00002949__C 10 113658711 14.94370396
Ha10_00001805__C 10 220068670 10.87452401
Eu quero remover os últimos 3 caracteres "__C" da primeira coluna. eu tentei
awk '{gsub(/[__c ]/,"",$1)}3'
mas remove todos os "_" na coluna um. minha saída desejada deve ser assim:
head desired
Ha1_00044012 1 51035805 10.35639322
Ha1_00045184 1 86676829 10.07929888
Ha1_00045056 1 150178524 19.44076068
Ha10_00000491 10 73473488 10.6038893
Ha10_00000577 10 78976728 12.45451149
Ha10_00002949 10 113658711 14.94370396
Ha10_00001805 10 220068670 10.87452401
Os colchetes ao redor
[__c ]
o transformam em um conjunto em vez de uma sequência de caracteres. Comgsub
, isso fará com que corresponda (e substitua) todos os_
,c
(minúsculas, notas) e caracteres de espaço em$1
O que você parece querer é substituir uma única instância da sequência
__C
(maiúsculas) que você pode fazer comsub(/__C/,"",$1)
Se você precisar que não faça distinção entre maiúsculas e minúsculas, você pode usar
/__[Cc]/
Se o texto for rígido o suficiente para ser apenas
__C
que você deseja remover, você pode fazer isso facilmente usandosed
também:A limpeza adicional pode ser feita com
sed
:Isso removeria todos os espaços à esquerda começando no início de cada linha, até o
H
inHa1
.Você poderia fazer isso usando a seguinte maneira:
ncr = é variável. aqui você pode especificar quantos caracteres deseja remover de uma coluna específica.