2012-09-16 49 views
6

Có ai biết danh sách đầy đủ các ký tự đặc biệt trong số sed không?ký tự đặc biệt trong sed

Xin vui lòng không đưa ra câu trả lời như, nó là cùng một danh sách các ký tự đặc biệt cho grep, bởi vì điều đó chỉ biến câu hỏi của tôi thành: Không ai biết danh sách đầy đủ các ký tự đặc biệt trong grep là gì?

+0

Tài liệu về sed (và grep) là những gì bạn đang tìm kiếm. Bạn không tìm thấy gì trong đó? – Mat

+0

Tôi chỉ nhìn thấy các ví dụ về các ký tự đặc biệt, nhưng tôi không bao giờ chắc chắn rằng đó là danh sách các ký tự đặc biệt _complete_ – mnr

+2

Tôi không chắc chắn bạn có ý nghĩa gì về "ký tự đặc biệt", nhưng tài liệu liệt kê mọi thứ bạn có thể làm. Không có điểm nào trong việc sao chép tài liệu đó ở đây. – Mat

Trả lời

3

Tôi nghĩ đây là danh sách đầy đủ các ký tự [\^$. |? * +() Mà sed sẽ trả lời theo cách khác với ký tự bình thường.

+2

Cũng phụ thuộc vào phương ngữ. Trong Linux 'sed' các ký tự'() | +? 'Không phải là đặc biệt bởi chính chúng, chỉ khi trước bởi dấu gạch chéo ngược. – tripleee

+1

Ngoài ra trong một lớp nhân vật '^ -]' (nhưng không có người khác) là đặc biệt. Đó là một ngôn ngữ mini riêng biệt, thực sự. – tripleee

+1

Bên trong một lớp nhân vật trong [POSIX] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html), bạn cũng có thể viết các biểu thức nhạy cảm miền địa phương như '[[: alpha:]]' hoặc '[[: punct:] [: digit:]]', do đó, ':' cũng có một ý nghĩa đặc biệt - và nó là một ngôn ngữ mini khác. URL liệt kê hành vi của BRE chuẩn POSIX (biểu thức chính quy cơ bản) và ERE (biểu thức chính quy mở rộng). Mô tả POSIX về ['sed'] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html) giải thích về điều đó. Đối với bất kỳ hệ thống cụ thể nào, hãy xem trang hướng dẫn sử dụng địa phương. –

5

Điều đó tùy thuộc. Nói đúng ra, một phù hợp tiêu chuẩn sed chỉ phải sử dụng Regular Expressions cơ bản mà the standard trạng thái:

Các ký tự đặc biệt BRE và bối cảnh trong đó họ có ý nghĩa đặc biệt của họ như sau:

.[\ Thời gian, trái dấu ngoặc vuông và dấu gạch chéo ngược phải đặc biệt trừ khi được sử dụng trong biểu thức ngoặc đơn (xem Biểu thức khung giá RE). Một biểu thức có chứa một '[' mà không phải là dấu gạch chéo ngược và không phải là một phần của biểu thức ngoặc đơn tạo ra kết quả không xác định.

* Dấu hoa thị phải đặc biệt trừ khi được sử dụng trong biểu thức ngoặc, là ký tự đầu tiên của toàn bộ BRE (sau ký tự '^' ban đầu, nếu có) hoặc ký tự đầu tiên của biểu thức con (sau lần đầu tiên) '^', nếu có); thấy BREs Matching Nhiều nhân vật

^ Các circumflex phải đặc biệt khi sử dụng như một anchor (xem BRE Biểu neo) hoặc là ký tự đầu tiên của một biểu thức khung (xem RE Bracket Expression)

$ Các dollar- dấu hiệu sẽ được đặc biệt khi được sử dụng như một neo.

Vì vậy, danh sách đầy đủ là .[\*^$, nhưng ngữ cảnh quan trọng. Ngoài ra, nhiều sed cung cấp các tùy chọn để sử dụng các biểu thức chính quy mở rộng (EREs), sẽ mở rộng danh sách và thay đổi ngữ cảnh trong đó các ký tự đặc biệt. Ví dụ: nếu không có nhóm ERE được tạo thành bằng cách sử dụng \(\), nhưng với EREs () thì chúng là đặc biệt và phải được thoát để khớp với nghĩa đen.

Các vấn đề liên quan