如何最好使用单行删除括号内的重复行?

如何最好使用单行删除括号内的重复行?

我的目的是删除每个测试中重复的参数。有多个测试可能具有重复的参数,我想删除每个测试中的第二个参数重复项。我的文件如下:

Test 1
{
  Param1 = "1";
  Param2 = "A";
  Param1 = "-1";
}
Test 2
{
  Param1 = "-1";
  Param3 = "B";
}

预期输出:

Test 1
{
  Param1 = "1";
  Param2 = "A";
}
Test 2
{
  Param1 = "-1";
  Param3 = "B";
}

答案1

尝试awk

awk '$0=="{" {delete params} { if ($1 in params) next; params[$1]=1 }1' file

这将保存$1params数组中,如果$1该数组中存在则跳过。每执行一次{,数组就会被删除。

答案2

$ awk '/^}/{delete seen} !seen[$1]++' file
Test 1
{
  Param1 = "1";
  Param2 = "A";
}
Test 2
{
  Param1 = "-1";
  Param3 = "B";
}

相关内容