Removendo padrões somente da primeira coluna

0

Eu tenho as seguintes informações:

'>16_R_I_1_0 M01230:42:000000000-AWMRD:1:1101:15012:1778 1:N:0:0 orig_bc=CGGAGCTATGGT new_bc=CGGAGCTATGGT bc_diffs=0  
'>0_V_I_2_2 M01230:42:000000000-AWMRD:1:1101:16237:1790 1:N:0:0 orig_bc=CTAGCGAACATC new_bc=CTAGCGAACATC bc_diffs=0

Eu quero remover o "_" somente da primeira coluna. Eu usei o comando assim: sed "$1=/s/\_//g" , mas não está funcionando. Eu quero a saída assim:

'>16RI10 M01230:42:000000000-AWMRD:1:1101:15012:1778 1:N:0:0 orig_bc=CGGAGCTATGGT new_bc=CGGAGCTATGGT bc_diffs=0  
'>0VI22 M01230:42:000000000-AWMRD:1:1101:16237:1790 1:N:0:0 orig_bc=CTAGCGAACATC new_bc=CTAGCGAACATC bc_diffs=0

qualquer sugestão, por favor

    
por Masum Billah 08.05.2017 / 07:32

3 respostas

3
awk '{ gsub("_", "", $1); print }'

Explicação:

awk '{                         for each line
      gsub(                    globally replace
           "_", ""             underscore by the empty string
           $1);                in the first column
      print                    and print the modified line
     }'
    
por 08.05.2017 / 07:48
3
sed -e ':a;s/^\( *[^ _]*\)_//;ta' data.genefile

Removerá todos os _ do primeiro campo apenas no genefile de entrada.

Perl

perl -F'(\s+)' -lne 'print map { /\S/ && !$a++ && s/_//g; $_ } @F' datagene.txt

Explicação

  • -F'(\s+)' = > FS = um ou mais espaços em branco. Os colchetes modificam o comportamento em que agora a matriz de campos @F compreende o espaço em branco intermediário que, no caso normal, é perdido. Fazemos isso para manter o whitesoace antes e depois da alteração.
  • O comando map { ... } opera na matriz de campos @F elementos um a um e a lógica booleana é colocada em vigor para garantir que apenas o primeiro campo não vazio seja operado.
por 08.05.2017 / 07:56
1
sed 'h;s/ .*//;s/_//g;G;s/\n[^ ]*//'

Explicação: O h copia a linha no espaço de espera, o primeiro s remove tudo, mas o primeiro campo, o segundo faz a substituição desejada. Em seguida, você anexa o espaço de espera com G e remove a nova linha com o primeiro campo. Feito.

    
por 08.05.2017 / 07:42