Transfrom line into two columns

2

Entrada:

IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal

Saída:

IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal
#                          ^
#                space instead of underscore

Como converter a linha acima em duas colunas (remover um sublinhado entre elas)? A primeira palavra é de comprimento fixo IN22FDX_S1P_WWWWBBBBMMMCCCC .

    
por Roopak Vasa 16.10.2017 / 07:21

2 respostas

15

Se a primeira coluna tiver um tamanho fixo,

sed 's/./ /28'

substitui o 28º caractere por um espaço.

Supondo que os dados são armazenados em um arquivo, você pode editá-los com sed.

sed -i.bak 's/./ /28' input_file

Observe o .bak que adicionei à opção -i ; ele instrui o sed para fazer um arquivo de backup input_file.bak com o sufixo fornecido. O sufixo é opcional.

    
por 16.10.2017 / 07:45
5

cut solução:

s="IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal"
cut -c 1-27,29- --output-delimiter=' ' <<<"$s"
  • -c - para selecionar caracteres

A saída:

IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal
    
por 16.10.2017 / 09:26