Відфільтруйте вміст буфера обміну, не використовуючи проміжний файл


11

Я намагаюся змінити текст, який знаходиться в моєму буфері обміну, видалити певні рядки, що містять деякі рядки, а потім отримати висновок для подальшої маніпуляції (я вважаю за краще копіювати мій буфер обміну, лише якщо мені це потрібно). Я думав щось подібне:

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

Я намагаюся запобігти створенню файлів і робити все в оболонці stdin / out себе. Я спробував використовувати труби, перенаправлення, grep / sed від входу, але жодне не призвело до друку введення без небажаного малюнка.

Відповіді:


13
xsel -o -p  | grep -v string

Вищевказане використовує утиліту xsel для зйомки з буфера обміну та відправлення поточного основного вибору до stdout. Потім ви можете змінити вихід за допомогою grep (або sed або awk) за вашим бажанням.

Якщо ви не хочете первинного вибору, замініть "-p" на "-s" для другого вибору або "-c" для вибору буфера обміну.

У debian або подібному дистрибутиві можна отримати xsel за допомогою apt-get install xsel.

Вищезазначене надсилає свій вихід у stdout. Якщо ви хочете отримати результат безпосередньо назад у виді, скористайтеся:

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

Параметр "-i" повідомляє xsel отримати вхід від stdin та зберегти його у виді. "-s" знову вказує вторинний вибір.


Цим я користуюся постійно. Це повинно працювати добре, просто переконайтеся, що ваша копія не надто велика, інакше ви можете отримати несподіваний вихід. Це має бути нормальним для будь-якого звичайного копіювання та вставлення.
coteyr

не рідний додаток для macos
lobi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.