No Linux, o seguinte funcionaria:
xsel | sed ':rep /-$/ {N; s/-\n//; b rep}' | xsel -i
No OSX, estou adivinhando (embora o script sed
funcione bem). pbcopy
parece ser o comando a ser usado. Supondo que haja um buffer de seleção no OSX e pbcopy
funcione por padrão, isso pode funcionar:
pbpaste | sed ':rep /-$/ {N; s/-\n//; b rep}' | pbcopy
Olhando para a página man online , parece que há um número de 'pastas' com as quais ele pode trabalhar:
-pboard {general | ruler | find | font}
specifies which pasteboard to copy to or paste from. If no pasteboard is
given, the general pasteboard will be used by default.
Eu não tenho idéia de qual (se houver) é a que você quer e não consigo ver nenhuma documentação adicional (embora eu não tenha olhado muito fundo). Você pode experimentar com pbpaste -pboard xxx
e ver o que sai. Existe uma boa chance de um para texto realçado enquanto o outro é para texto copiado com Cmd-C. Com uma opção de trabalho, basta adicioná-la aos dois pbpaste
e pbcopy
.
A outra coisa que pode dar errado é que pbcopy
tem problemas para ler e gravar na mesma área de trabalho ao mesmo tempo. A solução mais simples seria usar um utilitário Unix não padrão chamado sponge
. Faz parte de moreutils . Novamente Linux-centricamente:
pbpaste | sed ':rep /-$/ {N; s/-\n//; b rep}' | sponge | pbcopy
Caso contrário, use uma variável:
selection=$(pbpaste | sed ':rep /-$/ {N; s/-\n//; b rep}')
echo "$selection" | pbcopy
Atualizar
Supondo que o Automator use o stdout
do shell script, basta selecionar a opção to stdin
(é onde os dados chegam se forem canalizados para o script). O script de shell seria simplesmente:
#!/bin/sh
sed ':rep /-$/ {N; s/-\n//; b rep}'