Filtruj zawartość schowka bez użycia pliku pośredniego

11

Próbuję zmodyfikować tekst, który znajduje się w moim schowku, usunąć niektóre wiersze zawierające niektóre ciągi, a następnie uzyskać dane wyjściowe do dalszej manipulacji (wolę kopiować do mojego schowka tylko wtedy, gdy go potrzebuję). Myślałem o czymś takim:

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

Staram się zapobiec tworzeniu pliku i robieniu wszystkiego w samej powłoce stdin / out. Próbowałem użyć potoków, przekierowań, grep / sed z wejścia, ale żadne nie spowodowało wydrukowania wejścia bez niepożądanego wzorca.

Braiam
źródło

Odpowiedzi:

13
xsel -o -p  | grep -v string

Powyżej wykorzystuje narzędzie xsel do przechwytywania ze schowka i wysyłania bieżącego podstawowego wyboru do standardowego wyjścia. Następnie możesz dowolnie modyfikować wyjście za pomocą grep (lub sed lub awk).

Jeśli nie chcesz wyboru podstawowego, zamień „-p” na „-s” dla wyboru dodatkowego lub „-c” dla wyboru schowka.

W dystrybucji Debian lub podobnej możesz uzyskać xsel za pomocą apt-get install xsel.

Powyższe wysyła swoje wyjście na standardowe wyjście. Jeśli chcesz przechwycić dane wyjściowe bezpośrednio z powrotem do wyboru, użyj:

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

Opcja „-i” informuje xsel, aby pobierał dane wejściowe ze standardowego wejścia i zapisywał je w zaznaczeniu. „-s” ponownie określa wybór wtórny.

John1024
źródło
Cały czas tego używam. Powinien działać dobrze, po prostu upewnij się, że twoja kopia nie jest „zbyt duża”, w przeciwnym razie możesz uzyskać nieoczekiwany wynik. Powinno to być odpowiednie dla wszystkiego, co zwykle kopiujesz i wklejasz.
coteyr
nie natywna aplikacja dla systemu Macos
Lobi