我有一个管道输出,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;