Ничего неожиданного. Возврат каретки перемещает курсор в начало строки. grep
уже распечатал имя файла и номер строки, и содержимое соответствующей строки перезаписывает это (из-за возврата каретки до и после первого foo
в строке ).
Возврат каретки также может быть записан как\r
:
printf '\rfoo\rfoo\nfoo\n' >file
Будет создан файл с двумя строками. Первая строка будет дважды содержать слово foo
, но возврат каретки переместит курсор в начало строки. Если использовать cat
для просмотра этого файла, это будет выглядеть так, как будто в первой строке есть только один foo
.