Переключить две строки произвольной длины, разделенные символом

Я пытаюсь разбить имя файла, состоящее из произвольного количества разделенных пробелами слов, на две отдельные строки, ища первое вхождение символа «-», а затем переключить порядок этих строк. Например, если имя файла изначально

word1 слово 2 … слово9 – словоA словоB … wordZ

то желаемый выход

словоA словоB … словоZ – word1 слово2 … слово9

Обратите внимание, что с обеих сторон «-» может быть более одного слова. Мой код sed

sed -r 's/([a-zA-Z0-9]+) \- ([a-zA-Z0-9])*/\2 \- \1/' 

Мой вопрос заключается в том, как указать произвольное количество слов до и после «-» в sed. Я знаю, что sed поддерживает до 9 шаблонов.

Я прочитал прошлый вопрос, но речь идет о переключении известного фиксированного количества слов.

One Solution collect form web for “Переключить две строки произвольной длины, разделенные символом”

Попробуй это:

 echo 'word1 word 2 ... word9 - wordA wordB ... wordZ' | sed 's/\(.*\) - \(.*\)/\2 - \1/' 

Вывод:

 словоA словоB ... словоZ - word1 слово 2 ... слово9
  • Добавить символ табуляции в начало файла без возврата строки
  • Как заменить символ в группе захвата с помощью sed
  • SED Использование правильно изменить линию
  • Как добавить строку после n-го появления ключевого слова с помощью sed?
  • sed удалить начало строки с #, но не с #! (shell-скрипты)
  • используя sed, чтобы найти и заменить, не добавляя
  • Проблема с sed
  • печатать строки между началом и концом, используя sed
  • sed: как отключить автозапуск через файл сценария вместо использования ключа -n?
  • Использование sed для удаления строки из списка файлов не выполняется
  • Заменить диапазон текста специальными символами, используя sed
  • Linux и Unix - лучшая ОС в мире.