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

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

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
  • Сед работает с двумя линиями
  • Извлечение n символов из тестовой линии
  • sed - изменить линии, которые начинаются с одного данного слова и заканчиваются другим?
  • Регулярное выражение не работает над sed
  • Как использовать команду SED для удаления введенного кода из нескольких файлов?
  • Использование sed для замены символов между двумя шаблонами
  • Объединение операторов sed
  • SED Использование правильно изменить линию
  • Добавление файла текста с помощью Sed
  • sed с опцией -n и '$ ='
  • Как удалить определенную строку и следующую пустую строку с помощью GNU sed?
  • Linux и Unix - лучшая ОС в мире.