tcl text processing - reorganize valores em linhas e colunas com base no valor definido pelo usuário

Eu sou novo no tcl e gostaria de usá-lo no processamento de texto de um caso simples. O formato a seguir está no Liberty (arquivo .lib), usado no design de chips. Eu ficaria verdadeiramente grato por qualquer ajuda nisso.

Aqui está um trecho do meu arquivo (o processamento de texto deve ser feito apenas nos "valores")

timing () {  
    related_pin : "clk";  
    timing_type : setup_rising;  
    rise_constraint (constraint_template_5X5) {  
      index_1 ("0.01, 0.05, 0.12, 0.2, 0.4");  
      index_2 ("0.005, 0.025, 0.06, 0.1, 0.3");  
      index_3 ("0.084, 0.84, 3.36, 8.4, 13.44") ;  
      values ( \  
        "1.1, 1.2, 1.3, 1.4, 1.5", \        
        "2.1, 2.2, 2.3, 2.4, 2.5", \  
        "3.1, 3.2, 3.3, 3.4, 3.5", \  
        "4.1, 4.2, 4.3, 4.4, 4.5", \  
        "5.1, 5.2, 5.3, 5.4, 5.5", \  
        "6.1, 6.2, 6.3, 6.4, 6.5", \  
        "7.1 ,7.2, 7.3, 7.4, 7.5", \  
        "8.1, 8.2, 8.3, 8.4, 8.5", \  
        "9.1, 9.2, 9.3, 9.4, 9.5", \  
        "10.1,10.2,10.3,10.4,10.5", \  
        "11.1,11.2,11.3,11.4,11.5", \  
        "12.1,12.2,12.3,12.4,12.5", \  
        "13.1,13.2,13.3,13.4,13.5", \  
        "14.1,14.2,14.3,14.4,14.5", \  
        "15.1,15.2,15.3,15.4,15.5", \  
        "16.1,16.2,16.3,16.4,16.5", \  
        "17.1,17.2,17.3,17.4,17.5", \  
        "18.1,18.2,18.3,18.4,18.5", \  
        "19.1,19.2,19.3,19.4,19.5", \  
        "20.1,20.2,20.3,20.4,20.5", \  
        "21.1,21.2,21.3,21.4,21.5", \  
        "22.1,22.2,22.3,22.4,22.5", \  
        "23.1,23.2,23.3,23.4,23.5", \  
        "24.1,24.2,24.3,24.4,24.5", \  
        "25.1,25.2,25.3,25.4,25.5", \  
      );  
    } 

Portanto, todos os "valores" estão em um formato de tabela de pesquisa de 25 linhas x 5 colunas, que eu desejo alterar para um formato de tabela de 5 linhas x 5 colunas. Para fazer isso, eu gostaria de perguntar ao usuário qual dos 5 valores em index_3 ele / ela deseja antes do mapeamento ser feito da seguinte maneira (ao mesmo tempo em que remove a linha index_3):

C é a coluna definida pelo usuário com base no índice_3: (coluna 1 para 0,084, coluna 2 para 0,84, coluna 3 para 3,36, coluna 4 para 8,4, coluna 5 para 13,44). * Apenas 1 valor pode ser escolhido pelo usuário

Esquema de mapeamento:

   1,C -> row 1 column 1  
   2,C -> row 2 column 1  
   3,C -> row 3 column 1  
   4,C -> row 4 column 1  
   5,C -> row 5 column 1  
   6,C -> row 1 column 2  
   7,C -> row 2 column 2  
   8,C -> row 3 column 2

etc ..

Por exemplo, digamos que um usuário escolha a coluna 1 (valor 0,084 do índice_3) -> que 'escolhe' a primeira coluna inteira dos dados em 'valores' a serem processados / organizados em texto

Portanto, o processamento de texto resultante feito pelo tcl com base no esquema de mapeamento deve ser:

index_1 ("0.01, 0.05, 0.12, 0.2, 0.4");  
index_2 ("0.005, 0.025, 0.06, 0.1, 0.3");

 values ( \  
        "1.1, 6.1, 11.1, 16.1, 21.1", \  
        "2.1, 7.1, 12.1, 17.1, 22.1", \  
        "3.1, 8.1, 13.1, 18.1, 23.1", \  
        "4.1, 9.1, 14.1, 19.1, 24.1", \  
        "5.1, 10.1,15.1, 20.1, 25.1", \  
  ); 

Minha estratégia é esta:

procure "rise_constraint" para zerar quais valores o processo de texto em todo o arquivo

comentar a linha "index_3 (...)"; adicione / * e * / no início e no final da linha no arquivo processado reimpresso (opcional)

converter 'valores' de 25 linhas x 5 colunas para 5 linhas x 5 colunas com base no valor Index_3 escolhido ("escolha de coluna definida pelo usuário")

reimprima outras linhas como estão (incluindo os 'valores' processados pelo texto)

Eu tentei o meu melhor para explicar o meu pedido de codificação. Algum de vocês pode me ajudar a pensar em uma maneira adequada de fazer o processamento de texto? Muito Obrigado!!