Este comando converte seu exemplo de entrada em seu exemplo de saída:
sed 's|\|/|g;s|^[^/]*|/enlistments|'
Se alguma das suas entradas contiver barras invertidas na parte após a parte /^.*([[:digit:]]+):/
, você terá que dividir e conquistar para evitar que essas últimas barras invertidas sejam substituídas.
sed 'h;s/^.*([[:digit:]]\+)://;x;s/^\(.*([[:digit:]]\+):\).*//;s|\|/|g;s|^[^/]*|/enlistments|;G;s/\n//'
Explicação (as etapas marcadas com um asterisco ( [*]
) se aplicam a ambos os comandos):
-
h
- copia a linha para manter espaço -
s/^.*([[:digit:]]\+)://
- exclui a primeira parte da linha do original no espaço padrão -
x
- troca espaço de padrão e armazena espaço -
s/^\(.*([[:digit:]]\+):\).*//
- mantém a primeira parte da linha da cópia (descarte a última parte) -
s|\|/|g
- [*
] altera todas as barras invertidas para barras (na versão de divisão e conquista, apenas a parte no espaço padrão - a primeira parte da linha - é afetada) -
s|^[^/]*|/enlistments|
- [*
] altera tudo o que aparece antes da primeira barra em "/ inscritos" - isso pode ser mais seletivo se necessário -
G
- acrescenta uma nova linha e o conteúdo do espaço de espera no final do espaço padrão -
s/\n//
- remove a nova linha interior