Nahradiť reťazec, ktorý je v dvoch riadkoch predchádzajúcich uzavreté vzor

0

Otázka

Mám veľký config.js súbor a ja by som chcel nahradiť default:false, na default:true, čo je na začiatok field:'$scope.keepEffort'. Snažil som sa viac sed príkaz riešenia, ale nič nepomohlo.

                    {
                            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

Najlepšiu odpoveď

1

To je práca pre awk. Nasledujúce nie je pokus o zápas jednoduchých úvodzoviek, pretože pritom vyžaduje určitú shell, v ktorom uvedie, že obfuscates riešenie. Aj koncovú { je vytlačené. To je dosť jednoduché, ktorú chcete odstrániť, a kód, tak je vynechaný pre ujasnenie:

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

Myšlienka je jednoducho na osobitné záznamy podľa { a potom vykonajte substitučnej (cez gsubiba na záznamy, ktoré zodpovedajú požadovanej linky.

2021-11-23 20:28:16

Ďakujem vám veľmi pekne vaše riešenie funguje, ale ja som nový ispell a sed príkaz tak, ako by som mal odstrániť posledné extra { v súbore, ktorý dostal pridané v rovnakom príkaz
pw6591

Konečná { je pridané ako posledný riadok, tak je to asi najjednoduchšie jednoducho potrubie to sed. napr. awk ... | sed '$d'. Na sed príkaz vymaže posledný riadok.
William Pursell
0

Toto by mohlo fungovať pre vás (GNU sed):

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

Pozbierať linky medzi { a } a ak tieto riadky obsahovať $scope.keepEffort nahradiť default:false tým, že default:true.

N. B. doplnenie n po vyrovnaní { ktorý umožňuje spájanie }. Tiež, návrat do :a po zhromaždení zbierku tak, aby bolo možné na ďalší zápas {.

2021-11-23 23:32:01

V iných jazykoch

Táto stránka je v iných jazykoch

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