Filtrar o conteúdo da área de transferência sem usar um arquivo intermediário

11

Estou tentando modificar o texto que está na minha área de transferência, remover algumas linhas que contêm algumas seqüências de caracteres e obter a saída para manipulação adicional (prefiro copiar a minha área de transferência apenas se precisar). Eu estava pensando algo assim:

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

Eu tento impedir a criação do arquivo e fazer tudo no próprio shell stdin / out. Tentei usar pipes, redirecionamentos, grep / sed da entrada, mas nenhum resultou na impressão da entrada sem o padrão indesejado.

Braiam
fonte

Respostas:

13
xsel -o -p  | grep -v string

O exemplo acima usa o utilitário xsel para capturar da área de transferência e enviar a seleção principal atual para o stdout. Você pode modificar a saída com grep (ou sed ou awk) como desejar.

Se você não deseja a seleção primária, substitua "-p" por "-s" para a seleção secundária ou "-c" para a seleção da área de transferência.

Em uma distribuição debian ou similar, você pode obter o xsel com apt-get install xsel.

O acima envia sua saída para stdout. Se você deseja capturar a saída diretamente de volta para a seleção, use:

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

A opção "-i" diz ao xsel para obter informações do stdin e salvá-lo na seleção. "-s" novamente especifica a seleção secundária.

John1024
fonte
Eu uso esse o tempo todo. Deve funcionar bem, apenas verifique se a sua cópia não é "muito grande" ou se você pode obter resultados inesperados. Isso deve ser bom para qualquer coisa que você normalmente copie e cole.
coteyr
não é um aplicativo nativo para macos
lobi