![[중복] 파일에서 {와 } 두 문자 사이의 공백만 제거하세요.](https://linux55.com/image/124762/%5B%EC%A4%91%EB%B3%B5%5D%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%7B%EC%99%80%20%7D%20%EB%91%90%20%EB%AC%B8%EC%9E%90%20%EC%82%AC%EC%9D%B4%EC%9D%98%20%EA%B3%B5%EB%B0%B1%EB%A7%8C%20%EC%A0%9C%EA%B1%B0%ED%95%98%EC%84%B8%EC%9A%94..png)
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,,,
일치하는 문자열에 대해 또 다른 바꾸기( )를 수행하여 해당 문자열을 바꿉니다.