Filtra el contenido del portapapeles sin usar un archivo intermedio

11

Estoy tratando de modificar el texto que está en mi portapapeles, eliminar ciertas líneas que contienen algunas cadenas y luego obtener el resultado para una mayor manipulación (prefiero hacer frente a mi portapapeles solo si lo necesito). Estaba pensando en algo como esto:

cat > swapfile
##Paste all
grep -v string swapfile
## Read all
rm swapfile

Intento evitar la creación de archivos y hacer todo lo que está en el shell stdin / out. Intenté usar tuberías, redirecciones, grep / sed de la entrada, pero ninguna resultó en imprimir la entrada sin el patrón no deseado.

Braiam
fuente

Respuestas:

13
xsel -o -p  | grep -v string

Lo anterior usa la utilidad xsel para capturar desde el portapapeles y enviar la selección primaria actual a stdout. Luego puede modificar la salida con grep (o sed o awk) como desee.

Si no desea la selección principal, reemplace "-p" con "-s" para la selección secundaria o "-c" para la selección del portapapeles.

En una distribución debian o similar, puede obtener xsel con apt-get install xsel.

Lo anterior envía su salida a stdout. Si desea capturar la salida directamente en la selección, use:

xsel -o -p  | grep -v string | xsel -i -s

La opción "-i" le dice a xsel que obtenga información de stdin y la guarde en la selección. "-s" nuevamente especifica la selección secundaria.

John1024
fuente
Yo uso este todo el tiempo. Debería funcionar bien, solo asegúrese de que su copia no sea "demasiado grande" o podría obtener resultados inesperados. Sin embargo, esto debería estar bien para cualquier cosa que normalmente copie y pegue.
coteyr
no es una aplicación nativa para macos
lobi