awk или sed или perl: удалять только символы в определенном месте

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

leng-1494-001 leng-1464-002 leng-2414-004 leng-7894-005 leng-1323-006 

Я хочу переименовать его

  ferr-1494-001 ferr-1464-002 ferr-2414-004 ferr-7894-005 ferr-1323-006 

Я знаю, как это сделать для ferr и leng, но как заменить символы от 6 до 10 (1464,7894) пустой строкой, например, или как aaaa bbbb cccc с помощью sed? Также приветствуется awk или perl-решение. благодаря

3 Solutions collect form web for “awk или sed или perl: удалять только символы в определенном месте”

POSIXly:

 $ sed -e 's/-[^-]*-/-/' file leng-001 leng-002 leng-004 leng-005 leng-006 

Использование sed:

 sed -r 's/(.*[a-zA-Z]{4}\-)([0-9]{4})/\1aaaa/g' 

Я нашел решение, используя функцию подстроки perl

 echo leng-1323-006|perl -lpe 'substr($_, 5, 5) = "";' 

правильно вернуться

 leng-006 

Я удалил из позиции 5 5 плохих персонажей –

  • Удалить символ авторского права
  • Как изменить все строки в файле python от snake_case до camelCase в sed
  • Как найти текст, скопировать его и вставить в следующую строку в файле?
  • Удаление всех пробелов, вкладок, строк новой строки и т. Д. Из переменной?
  • Как разобрать этот вывод и поместить его в массив?
  • Я хочу добавить «n» строк из файла (скажем, file1) в другой файл под «n» вхождения строки в другой файл, чтобы
  • Как заполнить пробелы в первом столбце значением, полученным из предыдущей непустой строки?
  • как удалить первое вхождение 0 в мм / дд с использованием sed?
  • Как сопоставить текст между строкой и пробелом
  • df -k + как совместить строку корневого тома
  • Как отобразить имя дистрибутива (только) из lsb_release -i
  • Linux и Unix - лучшая ОС в мире.