【问题标题】:Using sed to replace curly braces使用 sed 替换花括号
【发布时间】:2016-11-25 13:58:55
【问题描述】:

我正在解析一些 json 数据,我需要删除开头和结尾的大括号 {}。我正在使用 sed 执行此操作,但据我所知,花括号在 sed 中执行特殊功能并且转义它们似乎不起作用。以下是我尝试过的几个示例。我真的可以使用一个有效的正则表达式。提前致谢!

我尝试的第一件事不起作用。

sed 's/\{\}//g'

我在这里找到的答案中的一些重做代码。

sed 's/\(\{\|\}\)//g'

【问题讨论】:

  • 您是要删除所有{} 还是字符串{}?为了清楚起见,最好包含示例输入和所需的输出。
  • @LevLevitsky 我正在从数据中的各个点单独删除它们。大括号之间通常没有空格,如果这很重要的话,大括号之前的内容也是如此。

标签: bash sed


【解决方案1】:

我会为此使用tr

tr -d '{}' < file.json

sed 应该是:

sed 's/[{}]//g' file.json

[{}] 是一个字符类,表示{}

如果您想更改文件,请将-i 选项传递给sed 或使用moreutils 中的sponge 工具。我喜欢它,因为它是通用的,这意味着它可以与任何命令一起使用,无论它是否支持就地编辑:

sed 's/[{}]//g' file.json | sponge file.json

【讨论】:

  • 成功了!谢谢!出于好奇,删除大括号的语法是什么?
  • sed 's/[][]//g' :)
  • @hek2mgl 好东西,现在我的数据完全符合我的要求。
  • 酷也请检查我的更新!实际上这是tr的工作!
猜你喜欢
  • 2014-03-09
  • 2013-01-26
  • 2018-03-21
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多