1

我有一个文件,其中所有服务器都列为Dominos_A.

除了第一个匹配项之外,是否可以更改 to 的出现Dominos_ADominos_BDominos_C

档案A:

  ..
  ....
  .....
  Server = Dominos_A.check
  ..
  .
  Server = Dominos_A.check
  Server = Dominos_A.check
  ..
  .
  Server = Dominos_A.check

档案A:

  ..
  ....
  .....
  Server = Dominos_A.check
  ..
  .
  Server = Dominos_B.check
  Server = Dominos_C.check
  ..
  .
  Server = Dominos_D.check
  ..

我试过了substr,但我仍然无法得到改变。

4

2 回答 2

4

如果您的最后一次出现不超出Z字母,您可以

perl -i -pe'
  BEGIN{ @r = "A" .. "Z" }
  s|Dominos_\K\w| shift @r |e;
  # for perl 5.8 or older
  # s|(Dominos_)\w| $1 . shift @r |e; 
' FileA
于 2013-10-09T07:48:35.403 回答
1

@mpapec ..不幸的是,这在我的带有 perl v5.8.4 的 solaris 盒子上不起作用。

所以我写了一个稍微不同的对我有用的。

> perl -pe 'BEGIN{@r="A".."Z";$i=0}s/(Dominos_)A/$1$r[$i++]/g' temp
  ..
  ....
  .....
  Server = Dominos_A.check
  ..
  .
  Server = Dominos_B.check
  Server = Dominos_C.check
  ..
  .
  Server = Dominos_D.check
>
于 2013-10-09T08:40:48.283 回答