In turkish locale, upper and lower case are mapped as following. U0049 <-> U0131 U0069 <-> U0130
It's expected that both following test cases returns U0130, but later returns nothing. $ printf '\304\260\n' >I # U0130 $ env LC_ALL=tr_TR.utf8 grep -i i I ? # U0130 $ env LC_ALL=tr_TR.utf8 grep -oi i I $ By the way, both following test cases work correctly. $ printf '\304\260\n' >i # U0131 $ env LC_ALL=tr_TR.utf8 grep -i I i ? # U0131 $ env LC_ALL=tr_TR.utf8 grep -oi I i ? # U0131 $