Sed не находит / заменяет все символы в каталоге

firefly спросил: 13 октября 2017 в 07:50 в: sed

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

Я использовал Homebrew для установки gnu-sed, и я использую команду:

find . -name "*.txt" -exec gsed -i -e 's/ñ/–/g' '{}' \;

У меня есть "тестовый" файл, содержащий символы, которые мне нужно заменить в каталоге, и все они найдены и заменены правильно. Но других символов в других текстовых файлах нет. например "Мы в Дании - все" (также не найдено / не заменено).

Почему это может быть? Как я могу это исправить? Спасибо!

Редактировать - Вывод

$ od -c filethatworks.txt | head -2
0000000    –  **  **  \n   –  **  **  \n   "  **  **  \n   "  **  **  \n
0000020    —  **  **  \n   —  **  **  \n   -  \n   "  **  **  \n   "  **
$ od -c filethatdoesnot.txt | head -2
0000000    T   h   o   s   e       b   l   e   s   s   e   d       d   a
0000020    y   s       o   f       s   u   m   m   e   r       a   r   e

Для файла, который работает, команда file возвращает

test.txt: UTF-8 Unicode text

и для тех, которые этого не делают:

ca001_mci_17071971.txt: Non-ISO extended-ASCII text, with very long lines, with CRL
F line terminators


0 ответов