Gostaria de substituir um padrão por outro padrão encontrado na mesma linha

2

Eu gostaria de substituir o segundo campo delimitado por tabulação pelo primeiro campo delimitado por sublinhado encontrado na mesma linha

Entrada

Cho1_01:C4WMNACXX:1:250326554   1   2 4 2 -9 1 1 4 3 1 4 1 -9 4 1 4 1 3 1 -9 4 2 2 3 3 3 3 2 3 1 1 3  
Elq3_04:C4WMNACXX:1:250326565   9   2 2 4 -9 3 -9 1 2 3 4 4 3 1 1 -9 3 3 3 -9 4 4 -9 3 3 3 3 3 3 1 1 

Saída desejada

Cho1_01:C4WMNACXX:1:250326554   Cho1    2 4 2 -9 1 1 4 3 1 4 1 -9 4 1 4 1 3 1 -9 4 2 2 3 3 3 3 2 3 1 1 3  
Elq3_04:C4WMNACXX:1:250326565   Elq3    2 2 4 -9 3 -9 1 2 3 4 4 3 1 1 -9 3 3 3 -9 4 4 -9 3 3 3 3 3 3 1 1 
    
por jl-blancopastor 27.05.2016 / 14:05

2 respostas

3

Você deve usar a função split em awk . Essa é uma das maneiras pelas quais isso pode ser alcançado. Por exemploHere

awk '{split($1,arr,"_"); $2 = arr[1]; print}' file

Aqui usamos split e usamos _ como um separador de matriz. Em seguida, o segundo campo é substituído por arr[1] , que contém o valor desejado.

    
por 27.05.2016 / 15:32
0

Com o GNU sed:

sed -E 's/^([^_]*)(_[^\t]*\t)([^\t]*)//' <file

POSIXly:

TAB=$(printff '\t')
sed -e "s/^\([^_]*\)\(_[^${TAB}]*${TAB}\)\([^${TAB}]*\)//" <file
    
por 28.05.2016 / 15:53