Đã thử điều này với vim, nhưng mở cho các ý tưởng / đề xuất khác.
Muốn thực hiện tìm kiếm và thay thế trong một tệp có 12000 dòng.
Cụ thể, nếu sự xuất hiện của "^ SetFontSize 28" tồn tại sau định nghĩa "^ Ẩn" và trước "^ Ẩn" hoặc "Hiển thị" tiếp theo, hãy thay đổi 28 thành 18. Ví dụ bên dưới.
Đây là một đoạn trích từ tệp gốc.
Hide # Gear - Endgame
ItemLevel >= 77
Rarity = Magic
LinkedSockets >= 3
BaseType "Runic Hatchet"
SetTextColor 140 190 255 # Magic Item Highlight
SetFontSize 28
Hide # Gear - Endgame
ItemLevel >= 77
Rarity = Magic
Sockets >= 3
BaseType "Runic Hatchet"
SetTextColor 140 190 255 # Magic Item Highlight
SetFontSize 28
Show # Gear - Endgame
ItemLevel >= 83
Rarity = Normal
Sockets < 3
BaseType "Tiger Hook"
SetTextColor 240 240 240 # Normal Item Highlight
SetBackgroundColor 70 70 70
SetFontSize 28
Kết quả cuối cùng cho khối "Ẩn" đầu tiên sẽ trông như thế này:
Hide # Gear - Endgame
ItemLevel >= 77
Rarity = Magic
LinkedSockets >= 3
BaseType "Runic Hatchet"
SetTextColor 140 190 255 # Magic Item Highlight
SetFontSize 18
Thay thế SetFontSize 28 thành SetFontSize 18, nhưng chỉ khi nó xuất hiện trong khối "^ Hide".
Regex khó chịu tôi đã thử trong vim: :%s/^Hide\(.*\)SetFontSize 28$/Hide\1SetFontSize 18/g
Nhưng đã nói mẫu không tìm thấy. Vui lòng cho tôi biết nếu có bất kỳ thông tin bổ sung nào được yêu cầu hoặc nếu yêu cầu của tôi không rõ ràng.