Thare is different behaviour for a invalid sequence between KWset and DFA. encode() { echo "$1" | tr ABC '\357\274\241'; } encode ABC | env LC_ALL=en_US.utf8 src/grep "$(encode A)\|q" encode ABC | env LC_ALL=en_US.utf8 src/grep -F "$(encode A)" encode sABC | env LC_ALL=en_US.utf8 src/grep "a$(encode A)\|q" encode sABC | env LC_ALL=en_US.utf8 src/grep -F "a$(encode A)" We expect that all of them are same results, but only 4th returns 1 row. This patch fixes it, changes all into 1 row returned. Norihiro