Intereting Posts
Как удалить все CRLF в файле (не заменять LF) Любая причина не использовать LUKS на резервном диске? Вращение catalina.out с использованием формата timestamp с использованием logrotate. как каталина. $ date.out Конвертировать связанные html-файлы в файл PDF? Как найти номера системных вызовов? Каков правильный способ установки «динамического» PATH в bash? (для android sdk) Разрешение отклонено после смены пароля (правильный пароль) Поиск каталога рекурсивно для файлов, перечисленных в csv, и скопировать их в другое место Почему я не могу использовать `kill $!` С расширением параметра в Bash, когда самый последний процесс «уведомлять-отправлять»? Как я могу определить, какое устройство или имя файла я перенаправляю Настройка Linux-ПК как маршрутизатора Почему размер текущего устройства больше, чем текущий размер тома после изменения размера раздела ntfs? Нечетное поведение GUI программного обеспечения в Ubuntu на основе eOS (источники, выбранные в фоновом режиме) Как определить, присутствует ли строка в stdout, не влияя на вывод? Как получить второй для последнего параметра предыдущей команды в bash?

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

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

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 шаблонов.

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

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

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

Вывод:

 словоA словоB ... словоZ - word1 слово 2 ... слово9