Înlocuiți șir care este de două linii anterioare potrivit model

0

Problema

Am o mare config.js fișier și aș dori să înlocuiască default:false, pentru a default:true, care este pe partea de sus a field:'$scope.keepEffort'. Am incercat mai multe sed comanda solutii, dar nimic nu pare să funcționeze.

                    {
                            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

Cel mai bun răspuns

1

Acesta este un loc de muncă pentru awk. Următoarele nu încercați pentru a se potrivi singur citate, deoarece acest lucru necesită unele shell citând care bulversează soluția. De asemenea, un final { este imprimat. Că este destul de ușor pentru a elimina, și codul pentru a face acest lucru este omise pentru claritate:

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

Ideea este pur și simplu de a separa registrele de { și apoi efectuați substituție (prin gsub) numai pe înregistrările care se potrivesc cu linia dorită.

2021-11-23 20:28:16

Vă mulțumesc foarte mult soluția funcționează, dar sunt nou awk și sed comandă așa cum ar trebui să elimina ultima suplimentar { in de fișier care s-au adăugat, în aceeași comandă
pw6591

Final { este adăugat ca ultima linie, deci probabil că este mai ușor să pur și simplu de conducte asta sed. de exemplu awk ... | sed '$d'. La sed comanda va șterge ultima linie.
William Pursell
0

Acest lucru ar putea lucra pentru tine (GNU sed):

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

Aduna linii între { și } și dacă aceste linii conțin $scope.keepEffort înlocuiți default:false de default:true.

N. B. plus de n după potrivire { care permite potrivirea de }. De asemenea, revenirea la :a după colectarea de o colecție, astfel încât să fie în măsură pentru a se potrivi un alt {.

2021-11-23 23:32:01

În alte limbi

Această pagină este în alte limbi

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