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

8

Estou tentando modificar o texto que está na minha área de transferência, remover certas linhas que contêm algumas strings e, em seguida, obter a saída para outra manipulação (prefiro lidar com a área de transferência somente se precisar dela). Eu estava pensando em 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 stdin / out do shell. Eu tentei usar pipes, redirecionamentos, grep / sed a partir da entrada, mas nenhum resultou na impressão da entrada sem o padrão indesejado.

    
por Braiam 17.01.2014 / 02:12

1 resposta

11
xsel -o -p  | grep -v string

O item 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 quiser.

Se você não quiser a seleção principal, substitua "-p" por "-s" para a seleção secundária ou "-c" pela 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ê quiser capturar a saída diretamente de volta na seleção, use:

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

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

    
por 17.01.2014 / 02:23