
Meu texto original é
11 2 CDTZ - b00264ab
36 37 CDTB - c2330001
Quero que o texto de saída apareça como
11 2 CDTZ - b0:02:64:ab
36 37 CDTB - c2:33:00:01
Eu tenho que adicionar dois pontos após cada 2 caracteres para a string que segue o hífen.
Existe algum comando comum de processamento de texto para o qual eu possa instruir isso
- Todas as strings antes (e incluindo) do hífen devem permanecer intactas.
- Insira dois pontos após cada 2 caracteres após o hífen.
Em geral, tenho que processar o texto antes e depois de um padrão (hífen aqui) de maneira diferente.
Meus esforços até agora:
- Tenho conhecimentos básicos de
sed
eawk
. - Se houvesse uma maneira de fazer isso
sed
dentro de umawk
, eu definiria-
(hífen) como separador de campoawk
e fariased 's/../&:/g;s/:$//'
on$2
e imprimiria a linha inteira usandoprint $0
.
Responder1
Tente isso,
awk -v OFS='\t' '{gsub(/../,"&:",$NF); sub(/:$/,"",$NF);}1' file
11 2 CDTZ - b0:02:64:ab
36 37 CDTB - c2:33:00:01
gsub(/../,"&:",$NF)
adicionará um final:
a cada casal ou personagem.sub(/:$/,"",$NF)
irá remover o indesejado:
no final do último campo que foi adicionado pelo anteriorgsub
Responder2
Supondo que o número hexadecimal no final tenha sempre oito caracteres:
$ sed 's/\(..\)\(..\)\(..\)\(..\)$/\1:\2:\3:\4/' file
11 2 CDTZ - b0:02:64:ab
36 37 CDTB - c2:33:00:01