Filtern Sie den Inhalt der Zwischenablage ohne Verwendung einer Zwischendatei

10

Ich versuche, den Text in meiner Zwischenablage zu ändern, bestimmte Zeilen zu entfernen, die einige Zeichenfolgen enthalten, und dann die Ausgabe zur weiteren Bearbeitung abzurufen (ich bevorzuge es, nur dann in meine Zwischenablage zu kopieren, wenn ich sie benötige). Ich dachte so etwas:

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

Ich versuche die Dateierstellung zu verhindern und mache alles in der Shell stdin / out selbst. Ich habe versucht, Pipes, Umleitungen und grep / sed von der Eingabe zu verwenden, aber keine hat dazu geführt, dass die Eingabe ohne das unerwünschte Muster gedruckt wurde.

Braiam
quelle

Antworten:

13
xsel -o -p  | grep -v string

Oben verwendet das Dienstprogramm xsel, um aus der Zwischenablage zu erfassen und die aktuelle primäre Auswahl an stdout zu senden. Sie können die Ausgabe dann nach Belieben mit grep (oder sed oder awk) ändern.

Wenn Sie die primäre Auswahl nicht möchten, ersetzen Sie "-p" durch "-s" für die sekundäre Auswahl oder "-c" für die Auswahl der Zwischenablage.

Auf einem Debian oder einer ähnlichen Distribution können Sie xsel mit erhalten apt-get install xsel.

Das obige sendet seine Ausgabe an stdout. Wenn Sie die Ausgabe direkt wieder in die Auswahl aufnehmen möchten, verwenden Sie:

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

Die Option "-i" weist xsel an, Eingaben von stdin abzurufen und in der Auswahl zu speichern. "-s" gibt erneut die sekundäre Auswahl an.

John1024
quelle
Ich benutze diesen die ganze Zeit. Es sollte gut funktionieren, stellen Sie einfach sicher, dass Ihre Kopie nicht "zu groß" ist, da sonst unerwartete Ausgaben auftreten können. Dies sollte jedoch für alles in Ordnung sein, was Sie normalerweise kopieren und einfügen.
Coteyr