단일 행을 사용하여 대괄호 안의 중복 행을 제거하는 가장 좋은 방법은 무엇입니까?

단일 행을 사용하여 대괄호 안의 중복 행을 제거하는 가장 좋은 방법은 무엇입니까?

내 의도는 각 테스트에서 중복된 매개변수를 제거하는 것입니다. 중복 매개변수가 있을 수 있는 여러 테스트가 있으며 각 테스트에서 두 번째 매개변수 중복을 제거하고 싶습니다. 내 파일은 다음과 같습니다.

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";
}

관련 정보