Форум русскоязычного сообщества Ubuntu


Автор Тема: разобрать строку по символам на shell  (Прочитано 1148 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dmig

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
разобрать строку по символам на shell
« : 28 Сентября 2009, 17:04:21 »
дано:
путь к файлу типа /path/to/file/1234/123567834.2344.mp3,
где:
- первая часть имени файла всегда длиннее 4 цифр (по сути это юникстайм)
- вторая часть имени файла может быть длиной от 1 до 6 символов
- имя директории, в которой лежит файл, всегда 4 цифры

надо:
получить путь вида: 1234/7/8/3/4/123567834.2344.mp3,
где:
- 1234 - уже знакомая директория
- 7/8/3/4 -- последние 4 цифры первой части имени файла, разбитые слэшами

как это проще сделать на shell?

Оффлайн RandomNT

  • Любитель
  • *
  • Сообщений: 80
    • Просмотр профиля
Re: разобрать строку по символам на shell
« Ответ #1 : 28 Сентября 2009, 17:27:56 »
echo "/path/to/file/1234/123567834.2344.mp3" | sed -r 's/.*(\/[0-9]{4}\/)(.*)([0-9])([0-9])([0-9])([0-9])(\.[0-9]{4}\.mp3)/\1\3\/\4\/\5\/\6\/\2\3\4\5\6\7/'

Оффлайн dmig

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: разобрать строку по символам на shell
« Ответ #2 : 28 Сентября 2009, 17:31:59 »
echo "/path/to/file/1234/123567834.2344.mp3" | sed -r 's/.*(\/[0-9]{4}\/)(.*)([0-9])([0-9])([0-9])([0-9])(\.[0-9]{4}\.mp3)/\1\3\/\4\/\5\/\6\/\2\3\4\5\6\7/'
охх...
вот как думал, есть ли способ проще чем этот, но, похоже, он и будет самым простым...

ЗЫ спасибо

Оффлайн RandomNT

  • Любитель
  • *
  • Сообщений: 80
    • Просмотр профиля
Re: разобрать строку по символам на shell
« Ответ #3 : 28 Сентября 2009, 17:36:18 »
чуть неправильно написал, так надо
echo "/path/to/file/1234/12356738334.332344.mp3" | sed -r 's/.*(\/[0-9]{4}\/)(.*)(.)(.)(.)(.)(\..*\.mp3)/\1\3\/\4\/\5\/\6\/\2\3\4\5\6\7/'

 

Страница сгенерирована за 0.027 секунд. Запросов: 25.