【问题标题】:Break a long line into multiple lines on every occurrence of a pattern using sed/awk使用 sed/awk 在每次出现模式时将长行分成多行
【发布时间】:2017-11-02 05:40:24
【问题描述】:

我有一个单行文件(实际上是很长的一行),如下所示:

{worda:wordB:[{"wordc","active":true},}{:wordb:"words","wordt""wordu""wordv","active":true} 等等.

在这一行中,一种常见的模式是 '"active":true'。我正在尝试根据这种模式将这一行分成多行。

需要的输出: {worda:wordB:[{"wordc","active":true} {:wordb:"words","wordt""wordu""wordv","active":true}

我尝试了 sed 和 awk,但是,它要么在处理后生成 0 Kb 文件,要么与输入文件相同。

我有 Windows 环境并使用 GNU sed/awk。

请帮忙。

【问题讨论】:

  • 格式化您的问题,请参阅stackoverflow.com/editing-help 并添加您尝试过的 sed/awk 代码
  • 是json吗?如果是这样,请使用 json 解析器。

标签: awk sed


【解决方案1】:
$ sed 's/true}.*{/true}\n{/' file 
{worda:wordB:[{"wordc","active":true}
{:wordb:"words","wordt""wordu""wordv","active":true}

简要说明, 使用sedtrue}.*{ 替换为true}\n{,其中.* 将被视为任何字符,\n 将是换行符

【讨论】:

    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    相关资源
    最近更新 更多