我的目的是删除每个测试中重复的参数。有多个测试可能具有重复的参数,我想删除每个测试中的第二个参数重复项。我的文件如下:
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
这将保存$1
在params
数组中,如果$1
该数组中存在则跳过。每执行一次{
,数组就会被删除。
答案2
$ awk '/^}/{delete seen} !seen[$1]++' file
Test 1
{
Param1 = "1";
Param2 = "A";
}
Test 2
{
Param1 = "-1";
Param3 = "B";
}