Remova novas linhas usando o comando shell (deve funcionar em um atalho global do KDE)

Remova novas linhas usando o comando shell (deve funcionar em um atalho global do KDE)

Preciso de um atalho para retirar novas linhas do texto na seleção atual. Quero colocar meu comando em um atalho global do KDE, o que já sei fazer. O comando que eu criei é:

sh -c 'xclip -o -sel p | tr -d "\-\n"  | tr "\n" "\ " | xclip -sel c; xdotool key --clearmodifiers ctrl+v'

O objetivo é pegar a seleção atual e canalizá-la trpara remover a hifenização de fim de linha (e juntar os fragmentos), depois substituir as novas linhas restantes por espaços, depois colocar isso na área de transferência e colá-lo (onde quer que o foco esteja ).

O problema: não está substituindo novas linhas por espaços tr "\n" "\ ". Em vez de fazer isso, ele substitui as novas linhas por nada. Eu tentei todos os tipos de representações de um espaço, e nenhuma delas funcionou

Eu tentei xdotool type, mas isso consome todo o espaço em branco e roda tudo junto mesmo sem o uso do tr.

Eu preferiria usar a seleção (primária ou secundária) em vez da área de transferência, e não ter que usar xdotool key ctrl+vse possível. Melhor ainda se eu puder evitar xdotooltotalmente devido à maneira inesperada como ele lida com os espaços em branco na minha experiência.

Não tenho xvkbdinstalado e prefiro não instalar. No entanto, se ajudar, posso instalarcopiarq,python-pyperclip, ouxorg-xclipboard. Também posso considerar outras ferramentas nos repositórios principais do Arch.

Responder1

Aqui está o que eu descobri:

sh -c 'xclip -o -sel p | perl -p -e "s/-\n//g"|  tr "\n" " "| xclip -sel c; xdotool key --clearmodifiers ctrl+v'

Substituí o primeiro trpor perl. Percebi que trestava vendo a sequência -\ncomo dois caracteres independentes em vez de uma string.

Encontrei a sugestão perl aqui:
https://stackoverflow.com/a/7697604/463994

Provavelmente existe uma maneira de fazer isso com um único comando perl, mas não sei. Aceitarei respostas melhores.

EDITAR: aqui está omelhor solução, graças a Rakesh Sharma (ver comentários):

sh -c 'xclip -o -sel p | perl -pe "s/-\n// || s/\n/ /" | xclip -sel c; xdotool key --clearmodifiers ctrl+v; xdotool key Alt'

Eu adicionei xdotool key Altporque tenho o atalho vinculado a uma combinação de teclas Alt e isso é necessário para limpar a tecla Alt.

informação relacionada