แทนที่ข้อความซึ่งเป็นสองบรรทัดก่อนหน้านี้เพื่อตรงกับรูปแบบ

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. ต่อไปนี้มันไม่ใช่ความพยายามจะตรงกับเดียวรื่องหมาตั้งแต่นั้นต้องการบางอย่าเชลล์พูดเรื่องนั้น obfuscates ทางออกหรอกนะ แล้วก็เป็นตามรอย { คือตีพิมพ์ นั่นคือถังใหญ่ๆ\ห่วงไว้กระโดดเพื่อลบและรหัสสำหรับแล้วถูกเอาออกไปจากสำหรับความชัดเจน:

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

ความคิดผมแค่อยากแยกออกบันทึกโดย { แล้วทำการแทน(ผ่านทาง gsub)เท่านั้นบันทึกนั่นตรงกับที่ต้องการสาย

2021-11-23 20:28:16

ขอบคุณมากทางแก้ของคุณทำงานแต่ฉันใหม่นภาษาโปรแกรม awklanguage section และ sed คำสั่งแล้วฉันควรจะลบสุดท้ายที่พิเศษ{อยู่ในแฟ้มนั่นได้เพิ่มเข้าไปอยู่ในที่เดียวกันคำสั่ง
pw6591

นั่นสุดท้าย { คือถูกเพิ่มเป็นสุดท้ายดังนั้นมันอาจจะเป็นที่ง่ายที่สุดที่จะแค่ท่องนี้ไป sed. eg 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 โดย default:true.

N. บีรอกเหนือจากของ n หลังจากที่เข้าคู่ { ซึ่งจะทำให้ตรงกับของ }. ยังกลับไป :a หลังจากเก็บเป็นชุดสะสมแล้วที่จะสามารถตรงกันอีก {.

2021-11-23 23:32:01

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่