Похоже, ваш файл закодирован в формате UTF-16, а не в 8-битном наборе символов.'^ @' - это нотация для ASCII NUL '\ 0', которая обычно портит сопоставление строк.
Одним из методов обработки без потерь является использование фильтра для преобразования UTF-16 в UTF.-8, а затем с помощью grep
на выходе - гипотетически, если бы команда была 'utf16-utf8', вы бы написали:
utf16-utf8 weirdo | grep Lunch
Как ужасно грубое приближение к 'utf16-utf8', вы могли бы рассмотреть:
tr -d '\0' < weirdo | grep Lunch
Это удаляет символы ASCII NUL из входного файла и позволяет grep
работать с выводом 'cleaned'.Теоретически, это может дать вам ложные срабатывания;на практике это, вероятно, не будет.