"qstat" 및 "grep"을 사용하여 숫자 범위가 포함된 행을 나열하는 방법은 무엇입니까?

"qstat" 및 "grep"을 사용하여 숫자 범위가 포함된 행을 나열하는 방법은 무엇입니까?

클러스터의 작업 상태를 모니터링하려면 qstat다음과 같은 줄을 출력하는 데 사용하세요.

job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
 146767 2.75000 REMD       xxxxxx      Rr    03/26/2021 10:58:17 [email protected]   160
 146811 2.75000 REMD       xxxxxx      r     03/26/2021 11:37:48 [email protected]   160
 146862 2.25862 REMD       xxxxxx      Rq    03/26/2021 06:24:39                                  160
 146911 2.19397 REMD       xxxxxx      Rq    03/26/2021 11:37:20                                  160
 146768 0.00000 REMD       xxxxxx      hqw   03/13/2021 14:47:35                                  160
 146769 0.00000 REMD       xxxxxx      hqw   03/13/2021 14:47:35                                  160
 146770 0.00000 REMD       xxxxxx      hqw   03/13/2021 14:47:36                                  160

각 행의 첫 번째 요소는 작업 ID입니다. 특정 범위의 작업을 표시하는 방법이 있습니까? 예를 들어 146868에서 146927까지의 작업만 표시하는 방법이 있습니까? 꼭 필요한 것 같습니다 grep.

답변1

다양한 숫자와 일치하는 정규식을 작성할 수 있지만 실제로는 그럴 가치가 없습니다. 숫자를 숫자로 처리할 수 있는 도구를 사용하는 것이 더 좋습니다. 예를 들어 awk에서는 이는 매우 사소한 일입니다. 여기서 ab는 각각 하한 및 상한이며 $1기본적으로 공백을 따라 분할되는 첫 번째 필드입니다.

$ qstat | awk -v a=146868 -v b=146927 '$1 >= a && $1 <= b {print}'
 146911 2.19397 REMD       xxxxxx      Rq    03/26/2021 11:37:20                                  160

(ERE에서는 등가 정규식은 과 같은데 146(86[89]|8[789][0-9]|9[01][0-9]|92[0-7]), 거기에서 실수하지 않는 한 불가능하지 않습니다. BRE에서는 대체가 없기 때문에 불가능합니다.)

답변2

간단한 해결책을 찾았습니다.

qstat | fgrep "$(seq 146868 146927)"

관련 정보