Nahradit řetězec, který je dva řádky předchozí, aby odpovídal vzoru

0

Otázka

Mám velký config.js soubor a chtěl bych nahradit default:false, k default:true, který je na vrcholu field:'$scope.keepEffort'. Snažil jsem se více sed command řešení, ale nic, zdá se do práce.

                    {
                            default:false,
                            enabled:true,
                            field:'criticalPath',
                            filter:false,
                            filterValue:'',
                            id:'show-critical-path',
                            operator:'colorize'
                    },{
                            default:false,
                            enabled:true,
                            field:'$scope.keepEffort',
                            filter:false,
                            filterValue:'',
                            id:'effort-constant',
                            operator:'var'
                    },{
                            default:false,
                            enabled:true,
                            field:'$scope.automaticProgress',
                            filter:false,
                            filterValue:'',
                            id:'automatic-progress',
                            operator:'var'
                    },{
                            default:false,
                            enabled:true,
                            field:'groupView',
                            filter:false,
                            filterValue:'',
                            id:'gantt-group-view',
                            operator:'var'
                    },{
bash sed shell
2021-11-23 19:45:38
2

Nejlepší odpověď

1

To je práce pro awk. Následující není pokus, aby odpovídaly jednoduché uvozovky, protože to vyžaduje nějaký shell cituje, že zastírá řešení. Také, koncové { je tisknout. To je dost snadné odstranit, a kód je pro přehlednost vynechány:

awk '/field:.\$scope.keepEffort/{gsub("default:false","default:true")}1' RS=\{ ORS=\{ input-file

Myšlenka je jednoduše na samostatné záznamy o { a pak provést substituci (přes gsub) pouze na záznamy, které odpovídají požadovanému řádku.

2021-11-23 20:28:16

Děkuji vám vaše řešení funguje, ale jsem nový awk a sed příkaz tak jak by měla odstranit poslední extra { v soubor, který dostal přidáno ve stejném příkazu
pw6591

To poslední { je přidán jako poslední řádek, tak je to asi nejjednodušší prostě trubka, aby to sed. např awk ... | sed '$d'. Na sed příkaz smaže poslední řádek.
William Pursell
0

To by mohlo pracovat pro vás (GNU sed):

sed ':a;/{/{n;:b;N;/}/!bb;/\$scope.keepEffort/s/\(default:\)false,/\1true,/;ba}' file

Shromáždit linky mezi { a } a pokud tyto řádky obsahují $scope.keepEffort vyměňte default:false o default:true.

N. B. přidání n po odpovídající { což umožňuje přizpůsobení }. Také, návrat do :a po shromáždění kolekce tak, aby bylo možné, aby odpovídaly další {.

2021-11-23 23:32:01

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................