tente
showq | awk '/jquick/ { printf "canceljob %d\n",$1}'
se estiver bem, pipe to bash, ou
showq | awk '/jquick/ { print $1}' | xargs canceljob
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
?
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)