Elimine las nuevas líneas usando el comando Shell (debe funcionar en un acceso directo global de KDE)

Elimine las nuevas líneas usando el comando Shell (debe funcionar en un acceso directo global de KDE)

Necesito un atajo para eliminar las nuevas líneas del texto en la selección actual. Quiero poner mi comando en un acceso directo global de KDE, lo cual ya sé cómo hacer. El comando que se me ocurrió es:

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

Su objetivo es tomar la selección actual y canalizarla trpara eliminar la separación de palabras al final de la línea (y unir los fragmentos), luego reemplazar las nuevas líneas restantes con espacios, luego colocar esto en el portapapeles y pegarlo (donde esté el foco). ).

El problema: no reemplaza las nuevas líneas con espacios tr "\n" "\ ". En lugar de hacer eso, reemplaza las nuevas líneas con nada. Probé todo tipo de representaciones de un espacio y ninguna funciona.

Lo intenté xdotool type, pero eso consume todo el espacio en blanco y ejecuta todo junto incluso sin el uso de tr.

Preferiría usar la selección (primaria o secundaria) en lugar del portapapeles, y no tener que usarla xdotool key ctrl+vsi es posible. Aún mejor si puedo evitarlo xdotoolpor completo debido a la forma inesperada en que maneja los espacios en blanco en mi experiencia.

No lo tengo xvkbdinstalado y prefiero no instalarlo. Sin embargo, si me ayuda, puedo instalarcopiaq,Python-pyperclip, oxorg-xportapapeles. También puedo considerar otras herramientas en los repositorios principales de Arch.

Respuesta1

Esto es lo que se me ocurrió:

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

Reemplacé el primero trcon perl. Me di cuenta de que trera ver la secuencia -\ncomo dos personajes independientes en lugar de una cadena.

Encontré la sugerencia de Perl aquí:
https://stackoverflow.com/a/7697604/463994

Probablemente haya una manera de hacer esto con un solo comando de Perl, pero no lo sé. Aceptaré mejores respuestas.

EDITAR: aquí está elmejor solución, gracias a Rakesh Sharma (ver comentarios):

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

Agregué xdotool key Altporque tengo el acceso directo vinculado a una combinación de teclas Alt y eso es necesario para borrar la tecla Alt.

información relacionada