>2) при LANG=POSIX grep не будет работать в контексте локали CP1251.
worksforme:
LANG=C grep `echo -n слово|iconv -t cp1251 -f utf8` файл |iconv -f cp1251 -t utf8
Арч, grep 2.7 (⇒ ванильный).
О контексте локали cp1251 особо думать не нужно. Кодировка однобайтная, ложным срабатываниям неоткуда взяться.
Кажется, с недавних пор grep начал быть более юникодным, чем я думал, но LANG=C ставит всё на свои места.
>Вторая подсказка: CP1251 -> UTF-8 всегда работает, обратное - не всегда.
Тут не принципиально. Ищется заведомо вписывающаяся в CP1251 строка в CP1251 файле.