Tente isto:
echo 'word1 word 2 ... word9 - wordA wordB ... wordZ' | sed 's/\(.*\) - \(.*\)/ - /'
Saída:
wordA wordB ... wordZ - word1 word 2 ... word9
Estou tentando dividir um nome de arquivo consistindo de um número arbitrário de palavras separadas por espaço em duas cadeias separadas procurando a primeira ocorrência de um símbolo '-' e, em seguida, alterne a ordem dessas cadeias. Por exemplo, se o nome do arquivo for originalmente
word1 word 2 ... word9 - wordA wordB ... wordZ
então a saída desejada é
wordA wordB ... wordZ - word1 word2 ... word9
Note que pode haver mais de uma palavra nos dois lados do '-'. Meu código de sed é
sed -r 's/([a-zA-Z0-9]+) \- ([a-zA-Z0-9])*/ \- /'
Minha pergunta é como especificar um número arbitrário de palavras antes e depois do '-' no sed. Estou ciente de que o sed suporta apenas até 9 padrões.
Li uma pergunta anterior , mas a questão é sobre a mudança um número fixo de palavras conhecido.
Tags sed