2

たとえば、*.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

4

2 に答える 2

3
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=」に続く単語を赤に変更します。

于 2013-09-15T23:09:24.493 に答える