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