
파이프라인 출력이 있고 free -o -m | awk '{print $4}'
첫 번째 줄과 두 번째 줄에 있는 두 숫자를 단계별로 실행하려고 합니다. 그래서 두 개의 정규 표현식이 필요합니다. 시도했지만 ^[0-9]{1,3}$
이는 모든 항목과 일치합니다. 111 222 333 입니다
첫 번째 정규식은 111이고 두 번째 정규식은 222가 되기를 원합니다.
답변1
귀하의 질문은 시대에 약간 뒤떨어져 있습니다.
아마도 다음과 같은 것을 원할 것입니다.
free -o -m | awk '
$1 == "Mem:" {print "do something with " $4}
$2 == "Swap:" {print "do something with " $4}'
그것은 다음과 같습니다:
eval "$(free -o -m | awk '
$1 == "Mem:" {print "free_mem=" $4}
$1 == "Swap:" {print "free_swap=" $4}'
)"
printf "%s\n" "Free mem: $free_mem" "Free swap: $free_swap"
답변2
나는 아직도 당신이 여기서 질문하는 것을 완전히 이해하지 못하는 것 같습니다. 그러나 free -o -m | awk '{print $4}'
다음 형식의 출력을 제공합니다.
공유
123
456
Bash의 조건에 따라 123 및 456을 확인하려면 정규식을 조작하는 대신 for 루프를 사용할 수 있습니다.
for value in `free -o -m | awk '{print $4}'`; do
if [[ "$value" != "shared" && CONDITION ]]; then echo "$value matched my condition"; fi;
done;