canaliza a saída do processo para o comando dividido por linha e espaço em branco

3

No sistema que estou usando, muitas vezes preciso cancelar os trabalhos que executo. Eu posso verificar meus trabalhos assim:

$ showq|grep jquick
2001744              jquick    Running   120    00:08:26  Mon Apr 11 11:06:02
2002020              jquick    Running   120    00:22:04  Mon Apr 11 11:19:40
2003328              jquick    Running   240     1:43:34  Mon Apr 11 12:41:10
2006300              jquick    Running   120     4:59:16  Mon Apr 11 15:56:52
2006312              jquick    Running   120     4:59:16  Mon Apr 11 15:56:52

O que eu faço agora é cancelar cada ID de trabalho manualmente: $ canceljob 2001744 2002020 2003328 2006300 2006312 .

Como posso filtrar essa saída para canalizar diretamente os IDs da tarefa para canceljob ?

    
por kilojoules 12.04.2016 / 19:02

2 respostas

3

tente

showq | awk '/jquick/ { printf "canceljob %d\n",$1}'

se estiver bem, pipe to bash, ou

 showq | awk '/jquick/ { print $1}' | xargs canceljob
    
por 12.04.2016 / 19:05
3

Analisar colunas delimitadas por espaços em branco é algo que o awk faz bem.

canceljob $(showq | awk '$2 == "jquick" {print $1}')

ou mais diretamente

showq | awk '$2 == "jquick" {system("canceljob " + $1)}'

Como alternativa, passe uma restrição para showq para que ele relate somente os trabalhos desejados.

canceljob $(showq -w user=jquick)
    
por 13.04.2016 / 00:56