Удалить символ из строки в определенном месте

Это не нужно, если вы хотите скопировать целый DVD в файл, который должен соответствовать только полезная нагрузка этого DVD. На самом деле не вызывает риск для конфиденциальность и может вызвать переполнение средств массовой информации, если вы перезаписываете Старый файл, который больше, чем полезная нагрузка DVD. В этом случае избыточные блоки старого файла будут Оставайтесь приложены к скопированному контенту DVD. Так они бы Будьте скопированы на новый DVD вместе с файловой системой.

Довольно полезно совет в комментарии StarFry Чтобы скопировать только блоки файловой системы ISO 9660 (если это на самом деле ISO 9660), потому что DVD среда может доставить больше блоков, чем те из файловой системы.

0
30.09.2015, 00:19
3 ответа

Другое решение sed

echo "-X-1.5" | sed 's/-//2'

Заменить второе вхождение - пустым.

4
28.01.2020, 02:13

Если вы знаете, что символ, который нужно удалить, находится в позиции 2 (начиная считать от 0), вы можете сделать следующее:

VAR="-X-1.5"
echo "${VAR:0:2}${VAR:3}"

что даст -X1.5.

Если бы это был первый экземпляр символа, который вы хотите удалить, но вы не знаете его позицию заранее, вы можете сделать следующее:

VAR="X-1.5-oh"
echo "${VAR/-/}"

что даст X1.5-oh.

3
28.01.2020, 02:13

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

Если, например, шаблон всегда будет -X с последующими -, которые вы хотите удалить, вы можете, например:

$ echo "-X-1.5" | sed 's/-X-/-X/g'

Результаты:

-X1.5
  • ищет -X-
  • заменяет на -X
  • /g, чтобы выполнить его жадно, имея в виду все подобные вхождения, в случае если у вас есть -X-1. 5-X-2.5-X-3.5 etc
1
28.01.2020, 02:13

Теги

Похожие вопросы