gpt4 book ai didi

macos - 如何在格式化的 JSON 文件中使用 sed(或 awk)在匹配后插入一行?

转载 作者:行者123 更新时间:2023-12-05 08:24:41 24 4
gpt4 key购买 nike

{
"id": "a1234567-89ab-cdef-0123-456789abcdef",
"properties": {
...
"my_id": "c1234567-89ab-cdef-0123-456789abcdef",
...
}

鉴于文件中的上述内容,我希望能够在 my_id 上执行匹配(包括 4 个前导空格),然后附加一个新行 "my_value": "abcd ",。所需的输出如下所示:

{
"id": "a1234567-89ab-cdef-0123-456789abcdef",
"properties": {
...
"my_id": "c1234567-89ab-cdef-0123-456789abcdef",
"my_value": "abcd",
...
}

使用在线示例,我无法使命令工作。这是我尝试过的示例:sed '/.*"my_id".*/a "my_value": "abcd",' test.json,为此我收到以下错误: 命令 a 需要\后跟文本

构建此命令的正确方法是什么?

最佳答案

使用任何 awk:

$ awk -v new='"my_value": "abcd",' '{print} sub(/"my_id":.*/,""){print $0 new}' file
{
"id": "a1234567-89ab-cdef-0123-456789abcdef",
"properties": {
...
"my_id": "c1234567-89ab-cdef-0123-456789abcdef",
"my_value": "abcd",
...
}

以上将使用现有 "my_id" 行的任何缩进来打印新行,它不假定/硬编码任何缩进,例如4 个空格。

我正在使用这个:

sub(/"my_id":.*/,""){print $0 new}

代替简报:

sub(/"my_id":.*/,new)

因此,如果新字符串包含任何反向引用字符(例如 &),它也不会中断。

关于macos - 如何在格式化的 JSON 文件中使用 sed(或 awk)在匹配后插入一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74606932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com