![[重複]ファイルから{と}の2文字の間のスペースのみを削除してください。](https://linux33.com/image/124762/%5B%E9%87%8D%E8%A4%87%5D%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8B%E3%82%89%7B%E3%81%A8%7D%E3%81%AE2%E6%96%87%E5%AD%97%E3%81%AE%E9%96%93%E3%81%AE%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AE%E3%81%BF%E3%82%92%E5%89%8A%E9%99%A4%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82.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行にのみあります。マルチライン処理は不要です。
答え1
Ugly Perl 1行(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,,,
に対して別の置換()を実行してその文字列を置き換えます。