라인 및 공백으로 구분된 명령으로 파이프 프로세스 출력

라인 및 공백으로 구분된 명령으로 파이프 프로세스 출력

작업 중인 시스템에서 실행 중인 작업을 자주 취소해야 하는 경우가 있습니다. 내 작업을 다음과 같이 확인할 수 있습니다.

$ 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

지금 내가 하고 있는 일은 각 작업 ID를 수동으로 취소하는 것입니다: $ canceljob 2001744 2002020 2003328 2006300 2006312.

작업 ID를 직접 파이프라인으로 연결하기 위해 이 출력을 필터링하려면 어떻게 해야 합니까 canceljob?

답변1

노력하다

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

가능하다면 bash로 파이프하거나

 showq | awk '/jquick/ { print $1}' | xargs canceljob

답변2

awk는 공백으로 구분된 열을 구문 분석하는 데 능숙합니다.

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

아니면 좀 더 직접적으로

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

또는 제약 조건을 다음으로 전달합니다.showq필요한 작업만 보고하도록 합니다.

canceljob $(showq -w user=jquick)

관련 정보