Filtrer le contenu du presse-papiers sans utiliser de fichier intermédiaire

11

J'essaie de modifier le texte qui se trouve dans mon presse-papiers, de supprimer certaines lignes de celui qui contient des chaînes, puis d'obtenir la sortie pour une manipulation ultérieure (je préfère copier dans mon presse-papiers uniquement si j'en ai besoin). Je pensais à quelque chose comme ça:

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

J'essaie d'empêcher la création de fichiers et de tout faire dans le shell stdin / out lui-même. J'ai essayé d'utiliser des tuyaux, des redirections, grep / sed à partir de l'entrée, mais aucun n'a entraîné l'impression de l'entrée sans le motif indésirable.

Braiam
la source

Réponses:

13
xsel -o -p  | grep -v string

Ce qui précède utilise l'utilitaire xsel pour capturer à partir du presse-papiers et envoyer la sélection principale actuelle à stdout. Vous pouvez ensuite modifier la sortie avec grep (ou sed ou awk) à votre guise.

Si vous ne voulez pas la sélection principale, remplacez "-p" par "-s" pour la sélection secondaire ou "-c" pour la sélection du presse-papiers.

Sur une distribution Debian ou similaire, vous pouvez obtenir xsel avec apt-get install xsel.

Ce qui précède envoie sa sortie à stdout. Si vous souhaitez capturer la sortie directement dans la sélection, utilisez:

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

L'option "-i" indique à xsel d'obtenir l'entrée de stdin et de l'enregistrer dans la sélection. "-s" spécifie à nouveau la sélection secondaire.

John1024
la source
J'utilise celui-ci tout le temps. Cela devrait bien fonctionner, assurez-vous simplement que votre copie n'est pas "trop ​​grande" ou vous pourriez obtenir une sortie inattendue. Cela devrait être bien pour tout ce que vous copiez et collez normalement.
coteyr
pas une application native pour macos
lobi