$ echo ABC | awk '$0 ~ /^[a-b]/'
ABC
$ echo ABC | awk '$0 ~ /^[a-a]/'
$ echo ABC | awk '$0 ~ /^a/'
$
Bạn thấy đấy. /[a-b]/
chụp A
, nhưng /[a-a]/
hoặc /a/
không. Tại sao?
1
Xem LC_COLLATE có nên ảnh hưởng đến phạm vi ký tự không? để biết thêm thông tin (chưa được giải quyết) về chủ đề này.
—
Caleb
Điều này dường như không chỉ là một vấn đề LC_COLLATE đơn giản (?), Bởi vì sử dụng một số giá trị không phải C cho LC_COLLATE tạo ra các kết quả khác nhau, tùy thuộc vào tiện ích nào được sử dụng. ví dụ. 'sed' và 'grep' cung cấp các kết quả khác nhau cho 'awk' khi sử dụng LC_COLLATE = en_AU.UTF-8 hoặc en_US.UTF-8 ... sed và grep quản lý để giải quyết vấn đề trường hợp và chỉ in chữ thường ( sử dụng các giá trị tương tự như trên)
—
Peter.O
Ít nhất là trong gawk (GNU Awk), điều này đã được sửa ([az] chỉ khớp với các chữ cái viết thường) kể từ phiên bản 4.0: gnu.org/software/gawk/manual/html_node/Ranges-and-Locales.html
—
Piotr Jurkiewicz