替换文件中不属于搜索模式但在后续文件中的特定字符串
Replace specific string in file which is not part of the search pattern but in follow up file
我有一个配置文件,如下例所示。
{
"view": "pagelogfile",
"text": "menu_logFile",
"disabled": false,
"icon": null,
"cls": "treelevel2",
"iconCls": null,
"users": ["admin", "guest"],
"expanded": null,
"leaf": true,
"data": []
},
{
"view": "pagemyfeature",
"text": "menu_myFeature",
"disabled": false,
"icon": null,
"cls": "treelevel2",
"iconCls": null,
"users": ["admin", "guest"],
"expanded": null,
"leaf": true,
"data": []
}
根据 HardwareId,某些配置选项对某些用户不可用。例如视图:pagemyfeature 对用户 guest 不可用。我将不得不从“用户数组”中删除用户 "guest"。由于同一个用户数组在配置文件中多次出现,我只想在一个地方将其更改为 "users": ["admin"]
,唯一我的搜索模式是 menu_myFeature 以获取该菜单的正确配置数组。如何更改此数组的后续行?
这就是我想要的样子
{
"view": "pagelogfile",
"text": "menu_logFile",
"disabled": false,
"icon": null,
"cls": "treelevel2",
"iconCls": null,
"users": ["admin", "guest"],
"expanded": null,
"leaf": true,
"data": []
},
{
"view": "pagemyfeature",
"text": "menu_myFeature",
"disabled": false,
"icon": null,
"cls": "treelevel2",
"iconCls": null,
"users": ["admin"],
"expanded": null,
"leaf": true,
"data": []
}
搜索 pagemyfeature 以及用 sed 替换字符串都不是问题。但是如何确保稍后替换字符串 6 行?
如果你真的想在 sed
中做,那就试试这个。 json
.
可以使用许多工具
sed '/{/{:loop; N; /pagemyfeature/{:loop2; N; /users/s/,\? *"guest"//g; b loop2;}; /}/b; b loop;}' yourfile
更具可读性的格式:
/{/{
:loop;
N;
/pagemyfeature/{
:loop2;
N;
/users/s/,\? *"guest"//g; b loop2;
};
/}/b;
b loop;
}
我有一个配置文件,如下例所示。
{
"view": "pagelogfile",
"text": "menu_logFile",
"disabled": false,
"icon": null,
"cls": "treelevel2",
"iconCls": null,
"users": ["admin", "guest"],
"expanded": null,
"leaf": true,
"data": []
},
{
"view": "pagemyfeature",
"text": "menu_myFeature",
"disabled": false,
"icon": null,
"cls": "treelevel2",
"iconCls": null,
"users": ["admin", "guest"],
"expanded": null,
"leaf": true,
"data": []
}
根据 HardwareId,某些配置选项对某些用户不可用。例如视图:pagemyfeature 对用户 guest 不可用。我将不得不从“用户数组”中删除用户 "guest"。由于同一个用户数组在配置文件中多次出现,我只想在一个地方将其更改为 "users": ["admin"]
,唯一我的搜索模式是 menu_myFeature 以获取该菜单的正确配置数组。如何更改此数组的后续行?
这就是我想要的样子
{
"view": "pagelogfile",
"text": "menu_logFile",
"disabled": false,
"icon": null,
"cls": "treelevel2",
"iconCls": null,
"users": ["admin", "guest"],
"expanded": null,
"leaf": true,
"data": []
},
{
"view": "pagemyfeature",
"text": "menu_myFeature",
"disabled": false,
"icon": null,
"cls": "treelevel2",
"iconCls": null,
"users": ["admin"],
"expanded": null,
"leaf": true,
"data": []
}
搜索 pagemyfeature 以及用 sed 替换字符串都不是问题。但是如何确保稍后替换字符串 6 行?
如果你真的想在 sed
中做,那就试试这个。 json
.
sed '/{/{:loop; N; /pagemyfeature/{:loop2; N; /users/s/,\? *"guest"//g; b loop2;}; /}/b; b loop;}' yourfile
更具可读性的格式:
/{/{
:loop;
N;
/pagemyfeature/{
:loop2;
N;
/users/s/,\? *"guest"//g; b loop2;
};
/}/b;
b loop;
}