Это не очень конкретный ответ, но он должен дать вам несколько ключевых слов для поиска.
Во-первых, легкий бит.Это просто, чтобы sed
соответствовало регулярному выражению символов.Например:
% echo 'one tw? f*ur' | sed 's/\*/ /'
one tw? f ur
% echo 'one tw? f*ur' | sed 's/[*?]/ /'
one tw f*ur
%
Обработка не-ASCII-символов более сложная.
Некоторые seds могут обрабатывать не-ASCII-символы, обычно файлы Unicode.Некоторые сида не могут.К сожалению, это не может быть очевидно из man-страницы вашего sed, какой она есть.Жизнь трудна.
Одна вещь, которую вы должны выяснить, - в какой кодировке находится входной файл. Файл Unicode будет кодирован в одном или другом из UTF-8 или UTF.-16 (или, возможно, один из нескольких менее распространенных).Это не место для расширения юникода и кодировок, но это ключевые слова для сканирования страниц справочника ...
Даже если вы не можете найти sed, который может обрабатывать юникод, тогда выможет быть в состоянии использовать perl, python или какой-либо другой язык сценариев для выполнения обработки - обычно они имеют механизмы регулярного выражения, которые могут выполнять Unicode.Опция perl -n
создает неявный цикл, который может сделать нужное преобразование однострочным.
Если ваш входной документ находится в другой (не-Unicode) кодировке, такой как одна из ISO-8859, тогда я думаю, что лучше всего было бы преобразовать его в UTF-8, используя что-то вроде iconv
, и продолжить с него.