Почему команда grep не работает с текстовыми файлами с кодировкой UTF-16 LE? - PullRequest
0 голосов
/ 14 июня 2019

Я хочу сохранить все строки в текстовом файле, которые начинаются с определенной строки, в другом текстовом файле.Итак, я использовал команду grep для этого:

grep '^This' input.txt > output.txt

Но выходной файл output.txt пуст, хотя в файле input.txt есть много строк, начинающихся со слова 'this».Один из моих наставников предположил, что файл input.txt имеет формат UTF-16 LE, и попросил меня изменить его на UTF-8.Тогда команда работала хорошо.

Почему команда grep не работает с файлами в формате UTF-16 LE?

1 Ответ

3 голосов
/ 14 июня 2019

grep не поддерживает кодировку. Он не ищет «символы», он ищет байт . Ваша консоль отправляет текст в кодировке UTF-8 / ASCII (то же самое в данном случае для строки «^ This») на grep для поиска. Если файл содержит текст в кодировке UTF-16, он не будет совпадать, поскольку представления байтов различаются.

...