为文件中的每个匹配模式添加唯一ID

时间:2014-05-06 18:09:06

标签: bash

我有一个包含一些断言的文件。

...
  assert p1;
...
  assert p2;

我需要为每个断言提供唯一的ID

...
  {uniqueId:0} assert p1;
...
  {uniqueId:1} assert p2;

使用基本的unix命令在bash中有办法吗?

2 个答案:

答案 0 :(得分:3)

认为你正在寻找像

这样的东西
perl -pe 's/assert/$c++." $&"/e' file 
...
  0 assert p1;
...
  1 assert p2;

这假设包含assert的唯一行是您要更改的行。如果是这种情况,我无法从您的示例输入中判断出来。

答案 1 :(得分:2)

使用awk:

awk '/^ *assert/{$0 = "{uniqueId:" i++ "} " $0}1' file
...
{uniqueId:0}   assert p1;
...
{uniqueId:1}   assert p2;