Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 当行以某个单词开头时从文件中删除行的脚本_Bash_Awk_Sed_Dot - Fatal编程技术网

Bash 当行以某个单词开头时从文件中删除行的脚本

Bash 当行以某个单词开头时从文件中删除行的脚本,bash,awk,sed,dot,Bash,Awk,Sed,Dot,我有一个像下面这样的点文件 .... 29 [label="OutRet", fillcolor="#90EE90", shape=box]; 30 [label="In(alloced_return_alloca[bits 0 to ..])", fillcolor="#6495ED", shape=box]; subgraph cluster_Call4 { label="Call4 : f = (int *)alloca(sizeof(*f) * __lengthof_f);

我有一个像下面这样的点文件

....
29 [label="OutRet", fillcolor="#90EE90", shape=box];
30 [label="In(alloced_return_alloca[bits 0 to ..])", fillcolor="#6495ED",
      shape=box];

subgraph cluster_Call4 { label="Call4 : f = (int *)alloca(sizeof(*f) * __lengthof_f);";
                           fillcolor="#B38B4D"; style="filled"; 17;16;
     };

edge [dir=back];
7 -> 6 [color="#000000", style="dotted"];
....
每当有子图属性时,我都想删除该属性。在某些文件中可能有多个sugraph属性,在这种情况下,我希望删除所有这些属性。我尝试使用sed'/subgraph/d'inputfile>outputFile和sed-I的/subgraph.*/'文件outputFile,但它只删除了包含子图的行,并给出如下结果:

30 [label="In(alloced_return_alloca[bits 0 to ..])", fillcolor="#6495ED",
      shape=box];

                           fillcolor="#B38B4D"; style="filled"; 17;16;
     };

  edge [dir=back];
有什么方法可以去掉另外两条线吗?通常有多少条关联线,即从子图开始到边出现的线。还有,有没有一种方法可以将结果输出到同一个文件中,而不是写入另一个文件


谢谢。

我发现sed'/subgraph/,/edge/d'inputFile这样做了。

我发现sed'/subgraph/,/edge/d'inputFile这样做了。

要删除由某些模式分隔的一系列行,您应该使用逗号分隔的两个地址,以选择第一行和最后一行之间的行,然后是命令:

使用-i/-in-place标志可以使用命令就地编辑文件

顺便说一句,将逻辑反转为!然后打印出所有内容,除了该范围内的行:

sed -n '/subgraph/,/edge/!p' -i file

注意:我们使用-n来禁止模式空间的自动打印,而不是使用p命令显式打印不匹配的每一行。

要删除由某些模式分隔的一系列行,您应该使用逗号分隔的两个地址,以选择第一行和最后一行之间的行,然后是命令:

使用-i/-in-place标志可以使用命令就地编辑文件

顺便说一句,将逻辑反转为!然后打印出所有内容,除了该范围内的行:

sed -n '/subgraph/,/edge/!p' -i file
请注意,我们使用-n来抑制图案空间的自动打印,而不是使用p命令显式打印每一行不匹配的图案空间