tcl text processing - ordnet Werte in Zeilen und Spalten basierend auf benutzerdefinierten Werten neu an

Ich bin neu bei tcl und möchte es in der Textverarbeitung eines einfachen Falls verwenden. Das folgende Format befindet sich in Liberty (.lib-Datei), das für das Chipdesign verwendet wird. Ich wäre wirklich für jede Hilfe in dieser Hinsicht dankbar.

Hier ist ein Ausschnitt aus meiner Datei (Textverarbeitung nur für die "Werte")

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

Alle "Werte" befinden sich also in einem Nachschlagetabellenformat von 25 Zeilen x 5 Spalten, das ich in ein Tabellenformat von 5 Zeilen x 5 Spalten ändern möchte. Um dies zu erreichen, möchte ich den Benutzer fragen, welche der 5 Werte in index_3 er möchte, bevor das Mapping wie folgt durchgeführt wird (wobei auch die Zeile index_3 entfernt wird):

C ist die benutzerdefinierte Spalte basierend auf index_3: (Spalte 1 für 0,084, Spalte 2 für 0,84, Spalte 3 für 3,36, Spalte 4 für 8,4, Spalte 5 für 13,44). * Nur 1 Wert kann vom Benutzer gewählt werden

Abbildungsschema:

   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

usw ..

Nehmen wir zum Beispiel an, ein Benutzer wählt Spalte 1 (Wert 0.084 aus Index_3) -> was die gesamte erste Spalte der Daten in den zu verarbeitenden / anzuordnenden "Werten" "auswählt"

Daher sollte die resultierende Textverarbeitung, die von tcl basierend auf dem Zuordnungsschema ausgeführt wird, wie folgt aussehen:

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

Meine Strategie lautet:

Suchen Sie nach "rise_constraint", um festzulegen, welche Werte in der gesamten Datei als Text verarbeitet werden sollen

Kommentarzeile "index_3 (...)" aus; füge / * und * / am Anfang und Ende der Zeile in die nachgedruckte verarbeitete Datei ein (optional)

'Werte' von 25 Zeilen x 5 Spalten-Tabelle in 5 Zeilen x 5 Spalten-Tabelle konvertieren, basierend auf dem ausgewählten Index_3-Wert ("benutzerdefinierte Spaltenauswahl")

andere Zeilen wie sie sind neu drucken (einschließlich der textverarbeiteten 'Werte')

Ich habe mein Bestes versucht, um meine Codierungsanforderung zu erklären. Kann mir einer von Ihnen bitte helfen, mir eine richtige Art und Weise zu überlegen, wie ich eine solche Textverarbeitung durchführen kann? Danke vielmals!!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage