我有一个配置文件,其中需要使用脚本删除对象的键值对。有没有办法只通过sed命令删除它。
我的示例文件显示在此处:
define({
name: 'ABC',
defaultApp: 'abc',
plugin: 'plugin',
loadOverride: 'load.json',
components: [
{
path: 'upm'
},
{
path: 'ech'
},
{
path: 'hb'
},
{
path: 'st'
},
{
path: 'fo'
},
{
path: 'cm'
},
{
path: 'si'
}
] });
预期产出:
define({
name: 'ABC',
defaultApp: 'abc',
plugin: 'plugin',
loadOverride: 'load.json',
components: [
{
path: 'hb'
},
{
path: 'fo'
},
{
path: 'cm'
}
] });
目前,我在我的脚本中使用这些行:
declare CONFIG_JS=/var/www/html/config.js
sed -i 's/upm/fo/' $CONFIG_JS //replacing upm with fo
sed -i 's/ech/cm/' $CONFIG_JS //replacing upm with fo
sed -i -n -e :a -e '1,14!{P;N;D;};N;ba' $CONFIG_JS //deleting last 14 lines
sed -i '$ a\ ]' $CONFIG_JS // appending ] in last line
sed -i '$ a\});' $CONFIG_JS // appending }); in last line
我正在获得预期的输出,但是当我的脚本执行此行
时sed -i '$ a\ ]' $CONFIG_JS
我的整个文件都覆盖了^ M个蓝色字符。任何人都可以建议我从config.js文件中删除^ M字符的方法,以及可能的原因可能是什么?
其次,我想在下面的命令中询问
sed -i -n -e :a -e '1,14!{P;N;D;};N;ba' $CONFIG_JS
有没有办法从最后一行开始删除最后14行,即总数是否。线条是50然后我必须从第48行到第14行删除。
谢谢..
答案 0 :(得分:-1)
sed "/{/{N;N;};/path: 'upm'/d"
翻译:如果有一个左括号('{'),除了这一行之外还要抓住接下来的两行,如果它(三行)包含“path'upm'”,则将其删除。