대체하는 문자열은 두 개의 라인 이전에 일치 패턴

0

질문

가 config.js 파일과 같은 대체 default:false, 하기 default:true, 에 있는 최고의 field:'$scope.keepEffort'. 나는 여러 시도 sed 명령 솔루션을 하지만 아무것도 작동하는 것 같다.

                    {
                            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

최고의 응답

1

awk. 다음을 시도하지 않는 일치하는 작은 따옴표하고 있기 때문에 그래서 필요 쉘 따옴표는 변조하는 솔루션입니다. 또한,끝 { 가 인쇄됩니다. 는 쉽게 충분하고 제거를 위한 코드 그렇게 이해를 돕기 위한:

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

아이디어는 단순히 구분하여 기록 { 다음을 수행합체(via gsub)에서만과 일치하는 레코드 원하는 라인입니다.

2021-11-23 20:28:16

매우 감사 솔루션 작동 하지만 나는 새로운 awk 및 sed 명령을 어떻게 제거해야 하는 마지막 여분{에 파일을 가지고 추가되는 동일한 명령에
pw6591

최종 { 추가되는 마지막 줄로,그래서 그것은 아마도 가장 쉽게 단순히 파이프 이하 sed. 예 awk ... | sed '$d'. 이 sed 명령을 삭제할 것이 마지막 라인입니다.
William Pursell
0

이 당신을 위해 일할 수 있습니다(GNU sed):

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

수집인 {} 면 그 라인을 포함 $scope.keepEffort 대체 default:false by default:true.

N.B. 추가 n 후 일치하는 { 할 수 있는 일치하는의 }. 또한 반환을 :a 후에 수집 컬렉션할 수 있도록 맞게 다른 {.

2021-11-23 23:32:01

다른 언어로

이 페이지는 다른 언어로되어 있습니다

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