Разбирал живую проблему на проде сайта aipredict.one (страница матча зависла со старыми данными) и наткнулся на побочную странность.
На сервере (Ubuntu, GNU grep) искал число в JSON-файле с архивом матчей сайта:
deploy@aipredict:~/aipredict.one$ grep -l '1627588' data/archive/2026-08.json
$
Пусто. Файл существует, права на чтение есть, опечаток в числе нет - проверял несколько раз.
Тут же, для той же самой строки того же самого файла:
$data = json_decode(file_get_contents('data/archive/2026-08.json'), true);
foreach ($data as $rec) {
if ((string)$rec['fixtureId'] === '1627588') {
print_r($rec); // находит без проблем
}
}
PHP находит запись сразу. Файл при этом один и тот же, между командами не менялся.
Вопрос: почему grep мог не найти подстроку, которая физически есть в файле и успешно вычитывается другим инструментом? Дайте хотя бы 2-3 гипотезы, объясняющие такое поведение, и как проверить каждую.