Eşleşen desenden önceki iki satır olan dizeyi değiştir

0

Soru

Büyük bir yapılandırmam var.js dosyası ve değiştirmek istiyorum default:false, -e doğru default:true, ve bu en üstte field:'$scope.keepEffort'. Birden çok denedim sed komut çözümleri ama hiçbir şey işe yaramıyor gibi görünüyor.

                    {
                            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

En iyi cevabı

1

Bu işi awk. Aşağıdaki böylece çözüm obfuscates bazı kabuk alıntı gerektirdiğinden, tek tırnaklı maç denemez. Ayrıca, bir sondaki { yazdırılır. Bu kaldırmak için yeterince kolaydır ve bunu yapmak için kod netlik için atlanır:

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

Fikir sadece kayıtları şu şekilde ayırmaktır: { ve sonra ikame işlemini gerçekleştirin (via gsub) yalnızca istenen satırla eşleşen kayıtlarda.

2021-11-23 20:28:16

Çözümünüz işe yaradığı için çok teşekkür ederim, ancak awk ve sed komutunda yeniyim, bu yüzden aynı komutta eklenen son ekstra { in dosyasını nasıl kaldırmalıyım
pw6591

Bu final { son satır olarak eklenir, bu yüzden bunu basitçe borulamak muhtemelen en kolay yoldur sed. örneğin awk ... | sed '$d'. Bu sed komut son satırı siler.
William Pursell
0

Bu sizin için işe yarayabilir (GNU sed):

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

Aralarında çizgiler toplayın { ve } ve eğer bu satırlar içeriyorsa $scope.keepEffort yerini almak default:false tarafından default:true.

N. B. ilavesi n eşleştirdikten sonra { hangi eşleşmesini sağlar }. Ayrıca, geri dönüş :a bir koleksiyon topladıktan sonra diğeriyle eşleşebilmek için {.

2021-11-23 23:32:01

Diğer dillerde

Bu sayfa diğer dillerde

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