2017-06-22 50 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