2017-06-22 49 views
0

我有一個文件說,修改的文件結構F1採用以下格式:使用腳本

digraph G { 
    rankdir=TB; 
    node [style="filled", ]; 
    2 [label="Decl n1", fillcolor="#FFEFD5", shape=box, ]; 
    3 [label="In1", fillcolor="#6495ED", shape=box, ]; 
    4 [label="Decl n2", fillcolor="#FFEFD5", shape=box, ]; 
    5 [label="In2", fillcolor="#6495ED", shape=box, ]; 
    ........... 

    edge [dir=back, ]; 
    3 -> 2 [color="#000000", style="dotted", ]; 
    2 -> 3 [color="#000000", style="dotted", ]; 
    ........... 
    } 

我需要修改它使得每個列表逆轉和「」在列表的末端應被刪除。例如,輸出格式應如下所示:

2 [shape=box, fillcolor="#FFEFD5", label="Decl n1"]; 

我該如何解決此問題?我必須使用任何腳本嗎?我對shell腳本不是很熟悉。

+0

能理解庫語法是安全的開始。請參閱https://pypi.python.org/pypi/graphviz(注意,Python,而不是shell)。 –

+0

@CharlesDuffy我能從點文件中獲取圖形對象嗎? – Narmada

+0

是的,如[如何在Python中解析DOT文件]的答案中所述(https://stackoverflow.com/questions/28313901/how-to-parse-a-dot-file-in-python) –

回答

0

理想情況下,您會使用知道點語法的東西,從而可以可靠地找到並修復無效語法。有一個Dot plugin for IDEA,你可以嘗試(使用F2移動到文件中的下一個問題)。對於非常簡單(但有風險的,因爲它不是語法感知)的替代品,你可以使用sed

sed -i 's/, \]/]/' your-file 

至於與sed逆轉,一般模式爲:

sed -i 's/\(first-part\)\(second-part\)/\2\1/' your-file 
+0

這隻會在最後刪除多餘的「,」。它不會顛倒名單? – Narmada

+0

哦,我沒有看到逆轉要求。你可以使用帶反向引用的'sed'('\ 1'等)。 – l0b0

+0

你能詳細說明一下嗎?我不是很熟悉sed – Narmada