我有 *.dot 文件,例如:
...
0 -> 1 [color=black];
1 -> 2 [color=blue];
1 -> 3 [color=blue];
2 -> 4 [color=gold3];
..
我需要更改以 $a 数字开头的行的“颜色”。我可以使用
轻松获得=blue
a="1"
cat experimental.dot | grep "^$a\ ->" | grep -o =[a-Z0-9]*
但我无法使用 sed 将文件中的 =blue
更改为 =red
。
最佳答案
a=1
sed "/^$a /s/\\(color=\\)[[:alnum:]]\\+/\\1red/" <<END
0 -> 1 [color=black];
1 -> 2 [color=blue];
1 -> 3 [color=blue];
2 -> 4 [color=gold3];
END
0 -> 1 [color=black];
1 -> 2 [color=red];
1 -> 3 [color=red];
2 -> 4 [color=gold3];
对于以变量值开头的所有行(添加空格,以便不匹配“10”或“11”),将“color=”后面的单词更改为红色。
关于bash - 通过 grep 查找文本并用 sed 替换该文本的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18818280/