Как заменить дефис словом

У меня есть следующий текст:

Since the 1-93 fragment contains additional residues 84–93. 

Первый hypen, найденный в «1-93», хорош, когда я обрабатываю текст, но второй, не уверен, что это hypen или другой символ, который вызвал мои проблемы, поэтому мне нужно заменить это «-» в тексте, чтобы на конец:

Вместо 84-93. Пожалуйста, как это сделать.

2 Solutions collect form web for “Как заменить дефис словом”

Вы всегда можете использовать такой инструмент, как восьмеричный дамп ( od ) или hexdump чтобы подтвердить код ASCII для данного символа.

пример

 $ echo 'Since the 1-93 fragment contains additional residues 84–93.' | hexdump -C 00000000 53 69 6e 63 65 20 74 68 65 20 31 2d 39 33 20 66 |Since the 1-93 f| 00000010 72 61 67 6d 65 6e 74 20 63 6f 6e 74 61 69 6e 73 |ragment contains| 00000020 20 61 64 64 69 74 69 6f 6e 61 6c 0a 72 65 73 69 | additional.resi| 00000030 64 75 65 73 20 38 34 e2 80 93 39 33 2e 0a |dues 84...93..| 0000003e 

Итак, первый - это ASCII-код 2d , а второй вовсе не ASCII-код. Таким образом, тире явно отличаются. Это на самом деле символ UTF-8 0xe28093 , EN-DASH. (Спасибо @casey за это разъяснение!)

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

СЕПГ

 $ var='Since the 1-93 fragment contains additional\nresidues 84–93.' $ echo -e $var | sed 's/–/-/g' Since the 1-93 fragment contains additional residues 84-93. 

удар

 $ var='Since the 1-93 fragment contains additional\nresidues 84–93.' $ echo -e ${var/–/-} Since the 1-93 fragment contains additional residues 84-93. 

Вы можете использовать sed :

 $ echo "Since the 1-93 fragment contains additional > residues 84–93." | sed 's/–/ to /g' Since the 1-93 fragment contains additional residues 84 to 93. 

Чтобы редактировать несколько файлов на месте, мы используем GNU sed , вы можете:

 sed -i 's/–/ to /g' ./*.txt 
  • Заменить неизвестную строку с помощью sed в сценарии bash
  • Как вставить строку между двумя последовательными,?
  • Добавить <script> в нижней части html-файла?
  • Добавить файл данных 2 в файл 1 без заголовка
  • сравнение двух столбцов
  • Сортировка записей по полю назад (не сверху вниз)
  • как вычислять средние значения в столбце, рассматривая информацию из другого столбца?
  • Нам нужен список «C», который содержит все элементы «A», но не имеет ни одного из «B»,
  • Удалите все строки, содержащие «..» и «@»
  • Сохраняйте символы до и после определенного символа
  • Удаление символов между | трубами |
  • Как я могу рассчитать среднее значение для каждой строки, исключая первое значение каждой строки?
  • Interesting Posts

    «Слишком много открытых файлов ssh», когда количество открытых файлов намного ниже ulimit

    Как рассчитывается средняя загрузка для FreeBSD?

    Как распределить вычисления «tar czf» в течение длительного времени?

    Лучший способ поддержания точности часов в LInux

    CentOS 7 | python3: ошибка при загрузке разделяемых библиотек: libpython3.5m.so.1.0

    Вывод команды «смотреть» в виде списка

    Asus G752VS, GTX 1070 – аудиоустройство PCI-e (вторая функция) отсутствует

    Попытка начать работу с Unix на ноутбуке Windows

    Замените Raspbian на Arch Linux

    Как уменьшить использование дискового пространства

    На страницах руководства используется цитата: `<символ / строка> '(строка цитирования внутри серьезного акцента и апострофа)

    Почему я не могу настроить яркость подсветки?

    Добавление в PS1 в bash_profile

    Как восстановить среду оболочки?

    Таблица отображения окна и столбец отображения экрана в Emacs

    Linux и Unix - лучшая ОС в мире.