![仅删除文件中两个字符 { 和 } 之间的空格](https://linux22.com/image/124762/%E4%BB%85%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E4%B8%AD%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%20%7B%20%E5%92%8C%20%7D%20%E4%B9%8B%E9%97%B4%E7%9A%84%E7%A9%BA%E6%A0%BC.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
丑陋的 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,,,
对匹配的字符串执行另一个替换 ( ) 来替换它们。