#!/bin/sh
project="29206|||95.2|||/home/aio........../1/20210608182432|||0
29207|||96.2|||/home/aio.........../2/20210608182432|||1
[0] GeForce GTX 1080 Ti | 68'C, 0 % | 10917 / 11175 MB | python/29206(10907M)
[1] GeForce GTX 1080 Ti | 100'C, 4 % | 0 / 11178 MB | python/29207(10002M)
[2] GeForce GTX 1080 Ti | 66'C, 4 % | 0 / 11178 MB |"
#while [[ ${project} ]]
#do
#done
if [[ ${project} =~ ([[:digit:]]{1,})\|{3}([[:digit:]]{1,3}\.?[[:digit:]]{0,3})\|{3}.+?(\/train\/.+?)\|{3}([[:digit:]]) ]]; then
pid1+=${BASH_REMATCH[1]}
cpu_usage+=${BASH_REMATCH[2]}
commands+=${BASH_REMATCH[3]}
index1+=${BASH_REMATCH[4]}
echo !! ${BASH_REMATCH[*]} !!
echo @@ ${BASH_REMATCH[$profile]} @@
fi
if [[ ${project} =~ \[([[:digit:]]+?)\].+?\|[[:space:]][[:digit:]]{1,3}\'C\,[[:space:]]+?([[:digit:]]{0,3})[[:space:]]\%[[:space:]]\|[[:space:]]+?([[:digit:]]+?)[[:space:]]\/[[:space:]]+?([[:digit:]]+?)[[:space:]][[:alpha:]]B[[:space:]]\|[[:space:]][[:alpha:]]+?\/([[:digit:]]+?)\(?[[:digit:]]+?M\) ]]; then
index2=${BASH_REMATCH[1]}
ea_proc_gpu_usage=${BASH_REMATCH[2]}
gpu_mem_used=${BASH_REMATCH[3]}
gpu_mem_total=${BASH_REMATCH[4]}
pid2=${BASH_REMATCH[5]}
echo $pid1,$pid2,$index1,$index2,$cpu_usage,$ea_proc_gpu_usage,$gpu_mem_used,$gpu_mem_total,$commands
fi
!! 29206|||95.2|||/home/aio......../1/20210608182432|||0 29207|||96.2|||/home/aio........./2/20210608182432|||1 29206 95.2 /tr......./2/20210608182432 1 !!
@@ 29206|||95.2|||/home/aio........./1/20210608182432|||0 29207|||96.2|||/home/aio......../2/20210608182432|||1 @@
29206,29207,1,0,95.2,4,0,11178,/train/3/............/2/20210608182432
결과를 확인해볼 것
${BASH_REMATCH[1]} 캡쳐링 그룹
${BASH_REMATCH[$regex]} 패턴매칭에 사용된 원문이 어디까지 보여줌
${BASH_REMATCH[*]} 패턴매칭에 사용된 원문이 어디까지인지, 그리고 패턴으로부터 파싱한 결과까지 같이 보여주는 아주 중요한 변수임
https://fabianlee.org/2020/01/29/bash-using-bash_rematch-to-pull-capture-groups-from-a-regex/
주의해야할 점들
조건문의 대괄호 사이에 양쪽 칸을 한칸씩 띄우기
조건문에 정규식패턴 작성시 더블쿼테이션 감싸지 말기
'Linux & UNIX' 카테고리의 다른 글
리눅스 쉘스크립트의 대괄호[ ]는 test 문법 (0) | 2021.06.11 |
---|---|
awk 사용법 (0) | 2021.06.10 |
쉘 작성 끝판왕! (0) | 2021.06.09 |
리눅스에서 .service 파일 생성시 주의 할 것 (0) | 2021.06.04 |
프롬프트명 일시변경 (0) | 2021.06.02 |
댓글