[중복] 파일에서 {와 } 두 문자 사이의 공백만 제거하세요.

[중복] 파일에서 {와 } 두 문자 사이의 공백만 제거하세요.

JSON 값이 포함된 파일이 있습니다.

abc={"adf": "def",   "abc2":"def2", "abc3" : "def3" }
abc4= 1
abc = {hello : world, hello:"a"}

{다른 곳이 아닌 중간 어디에서나 공백을 제거하고 싶습니다 }. 제 경우에는 값에 공백이 없습니다.

abc={"adf":"def","abc2":"def2","abc3":"def3"}
abc4= 1
abc = {hello:world,hello:"a"}

sed, awk, perl 또는 기타 도구를 사용하여 이를 어떻게 달성할 수 있습니까?

참고: 모든 값은 한 행에만 있습니다. 다중 라인 처리가 필요하지 않습니다.

답변1

Ugly Perl 한 줄짜리(Perl v5.24.1용):

$ perl -pe 's/{.*?}/ $& =~ s, ,,gr /eg'  input
abc={"adf":"def","abc2":"def2","abc3":"def3"}
abc4= 1
abc = {hello:world,hello:"a"}

외부 바꾸기( s///)는 중괄호로 묶인 문자열을 일치시키고 s,,,일치하는 문자열에 대해 또 다른 바꾸기( )를 수행하여 해당 문자열을 바꿉니다.

관련 정보