grep
Gagasan karakter bergantung pada lokal . Jika Anda berada di lokal non-Unicode dan Anda mengambil dari file dengan karakter Unicode di dalamnya maka jumlah karakter tidak akan cocok. Jika Anda echo $LANG
maka Anda akan melihat tempat Anda berada.
Jika Anda mengatur variabel lingkungan LC_CTYPE
dan / atau LANG
ke nilai yang diakhiri dengan ".UTF-8" maka Anda akan mendapatkan perilaku yang benar:
$ cat data
étuis
letter
éééééé
$ LANG=C grep -E '^.{6}$' data
étuis
letter
$ LANG=en_US.UTF_8 grep -E '^.{6}$' data
letter
éééééé
$
Anda dapat mengubah lokal hanya untuk satu perintah dengan menetapkan variabel pada baris yang sama dengan perintah.
Dengan konfigurasi ini, karakter multi-byte dianggap sebagai karakter tunggal. Jika Anda ingin mengecualikan karakter non-ASCII sepenuhnya, beberapa jawaban lain memiliki solusi untuk Anda.
Perhatikan bahwa masih mungkin hal-hal untuk dipecahkan, atau setidaknya tidak melakukan apa yang Anda harapkan, dengan adanya penggabungan karakter . Anda grep
dapat memperlakukan SURAT KECIL LATIN E + KARAKTER GABUNGAN AKUT DI ATAS berbeda dari SURAT KECIL LATIN E DENGAN AKUT.
.
, sesuatu sepertiwăsd's
akan cocok