обработка текста tcl - переупорядочить значения в строках и столбцах на основе заданного пользователем значения

Я новичок в tcl и хотел бы использовать его в обработке текста простого случая. Следующий формат находится в Liberty (файл .lib), который используется в дизайне чипов. Я был бы действительно признателен за любую помощь в этом.

Вот фрагмент моего файла (обработка текста должна выполняться только на «значениях»)

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", \  
      );  
    } 

Таким образом, все «значения» находятся в формате таблицы поиска 25 строк x 5 столбцов, который я хочу изменить на формат таблицы 5 строк x 5 столбцов. Для этого я хотел бы спросить пользователя, какое из 5 значений в index_3 он / она хочет, чтобы сопоставление было выполнено следующим образом (при этом также удаляется строка index_3):

C - это пользовательский столбец на основе index_3: (столбец 1 для 0,084, столбец 2 для 0,84, столбец 3 для 3,36, столбец 4 для 8,4, столбец 5 для 13,44). * Только 1 значение может быть выбрано пользователем

Схема картирования:

   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

так далее ..

Например, скажем, пользователь выбирает столбец 1 (значение 0,084 из index_3) ->, который «выбирает» весь 1-й столбец данных в «значениях» для обработки / размещения текста

Следовательно, результирующая обработка текста, выполняемая tcl на основе схемы отображения, должна быть:

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", \  
  ); 

Моя стратегия такова:

поиск по запросу "rise_constraint ", чтобы найти значения для обработки текста во всем файле

строка комментария "index_3 (...)"; добавить / * и * / в начало и конец строки в перепечатанном обработанном файле (необязательно)

преобразовать «значения» из таблицы 25 строк x 5 столбцов в таблицу 5 строк x 5 столбцов НА ОСНОВЕ выбранного значения Index_3 («выбор столбца, определенный пользователем»)

перепечатайте другие строки как есть (включая обработанные текстовые 'значения')

Я старался изо всех сил, чтобы объяснить мой запрос на кодирование. Может кто-нибудь из вас meastros, пожалуйста, помогите мне подумать о том, как в tcl я могу сделать такую ​​обработку текста? Большое спасибо!!

Ответы на вопрос(2)

Ваш ответ на вопрос