Фильтрация содержимого буфера обмена без использования промежуточного файла

11

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

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

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

Braiam
источник

Ответы:

13
xsel -o -p  | grep -v string

Выше используется утилита xsel для захвата из буфера обмена и отправки текущего основного выбора в stdout. Затем вы можете изменить вывод с помощью grep (или sed или awk), как вам угодно.

Если вам не нужен основной выбор, замените «-p» на «-s» для вторичного выбора или «-c» для выбора буфера обмена.

В Debian или аналогичном дистрибутиве вы можете получить xsel с помощью apt-get install xsel.

Выше отправляет свой вывод на стандартный вывод. Если вы хотите захватить вывод непосредственно обратно в выделение, используйте:

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

Опция "-i" говорит xsel получить входные данные из stdin и сохранить их в выделенном фрагменте. «-s» снова указывает вторичный выбор.

John1024
источник
Я использую это все время. Это должно работать хорошо, просто убедитесь, что ваша копия не слишком большая, или вы можете получить неожиданный вывод. Это должно быть хорошо для всего, что вы обычно копировать и вставлять, хотя.
Котейр
не нативное приложение для macos
лоби