【问题标题】:linux sed grep -P replace string with newline and taking next line into considerationlinux sed grep -P 用换行符替换字符串并考虑下一行
【发布时间】:2022-12-05 18:53:51
【问题描述】:

所以我创建了一个文件,我需要将最后一个“,”替换为“”,这样它将是有效的 JSON。问题是我无法弄清楚如何使用 SED 甚至 GREP/PIPING 来完成它。我在这里真的很困惑。任何帮助,将不胜感激。

测试.json

[
{MANY OTHER RECORDS, MAKING FILE 3.5Gig (making sed fail because of memory, so newlines were added)},
{"ID":"57705e4a-158c-4d4e-9e07-94892acd98aa","USERNAME":"jmael","LOGINTIMESTAMP":"2021-11-30"},
{"ID":"b8b67609-50ed-4cdc-bbb4-622c7e6a8cd2","USERNAME":"henrydo","LOGINTIMESTAMP":"2021-12-15"},
{"ID":"a44973d0-0ec1-4252-b9e6-2fd7566c6f7d","USERNAME":"null","LOGINTIMESTAMP":"2021-10-31"},
]

当然,使用 GREP 和 P 匹配我需要替换的内容

cat test.json | grep -Pzo '"},\n]'

【问题讨论】:

    标签: linux bash sed grep


    【解决方案1】:

    使用 GNU sed

    $ sed -Ez 's/([^]]*),//' test.json
    [
    {MANY OTHER RECORDS, MAKING FILE 3.5Gig (making sed fail because of memory, so newlines were added)},
    {"ID":"57705e4a-158c-4d4e-9e07-94892acd98aa","USERNAME":"jmael","LOGINTIMESTAMP":"2021-11-30"},
    {"ID":"b8b67609-50ed-4cdc-bbb4-622c7e6a8cd2","USERNAME":"henrydo","LOGINTIMESTAMP":"2021-12-15"},
    {"ID":"a44973d0-0ec1-4252-b9e6-2fd7566c6f7d","USERNAME":"null","LOGINTIMESTAMP":"2021-10-31"}
    ]
    

    【讨论】:

      猜你喜欢
      • 2014-01-13
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多