Это не нужно, если вы хотите скопировать целый DVD в файл, который должен соответствовать только полезная нагрузка этого DVD. На самом деле не вызывает риск для конфиденциальность и может вызвать переполнение средств массовой информации, если вы перезаписываете Старый файл, который больше, чем полезная нагрузка DVD. В этом случае избыточные блоки старого файла будут Оставайтесь приложены к скопированному контенту DVD. Так они бы Будьте скопированы на новый DVD вместе с файловой системой.
Довольно полезно совет в комментарии StarFry Чтобы скопировать только блоки файловой системы ISO 9660 (если это на самом деле ISO 9660), потому что DVD среда может доставить больше блоков, чем те из файловой системы.
Другое решение sed
echo "-X-1.5" | sed 's/-//2'
Заменить второе вхождение - пустым.
Если вы знаете, что символ, который нужно удалить, находится в позиции 2 (начиная считать от 0), вы можете сделать следующее:
VAR="-X-1.5"
echo "${VAR:0:2}${VAR:3}"
что даст -X1.5
.
Если бы это был первый экземпляр символа, который вы хотите удалить, но вы не знаете его позицию заранее, вы можете сделать следующее:
VAR="X-1.5-oh"
echo "${VAR/-/}"
что даст X1.5-oh
.
Поскольку удаляемая часть не находится ни в начале, ни в конце, ни в полном удалении, это исключает множество общих сочетаний клавиш в пользу чего-то более конкретного, чтобы соответствовать известному шаблону, так что это действительно зависит от того, каким будет этот шаблон...
Если, например, шаблон всегда будет -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