首页 > 解决方案 > 如何从 JSON 输出文件中删除这些特殊字符

问题描述

^[[0;32m ?~V? ^[[0米

JSON 文件正在由 shell 脚本编写。

因此,文本处理会产生这些特殊字符,尝试使用 dos2unix 并使用 %s 选项全局更改字符。

标签: linuxshell

解决方案


看一下这个。我在示例 JSON 文件中引入了一些控制字符,可以使用“cat -v”命令显示。带有 ^B,^A,^D 的那些是控制字符。使用 perl 完全删除控制字符。您可以重定向到新文件

> cat -v json_control.txt

^B{"menu": {
  "id": "file",
  "value": "File",
  "popup": ^B{
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}^D
^A


>  perl -pe ' { s/[\x00-\x09\x0B-\x1F]//g } ' json_control.txt | cat -v

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}

>

推荐阅读