Tôi có ấn tượng rằng một biểu tượng dấu mũ có nghĩa là " bắt đầu của dòng " với các biểu thức chính quy POSIX mở rộng.
Tuy nhiên, khi tôi sử dụng nó với grep
nó cư xử bất ngờ.
Tôi đang sử dụng GNU grep
2.5.4 trên Ubuntu 10.04 Lucid Lynx .
Tôi lặp lại một dòng ' xin chào ', sau đó chuyển nó thành một dòng grep
tìm kiếm " các ký tự khoảng trắng bằng không hoặc nhiều hơn theo sau là chữ h ":
echo ' hello' | grep -E '[:space:]*h'
hello
grep
thấy nó ổn
Nếu tôi thêm một dấu mũ để chỉ ra rằng tôi chỉ muốn mẫu khớp với " các ký tự khoảng trắng bằng 0 hoặc nhiều hơn theo sau là chữ h ở đầu chuỗi ":
echo ' hello' | grep -E '^[:space:]*h'
Không có trận đấu được tìm thấy. Tôi hy vọng chuỗi đã khớp bởi vì nó bắt đầu bằng khoảng trắng theo sau là h .
Tại sao biểu tượng dấu mũ này ngăn cản một trận đấu?