正規表現、初めてのみ発生

正規表現、初めてのみ発生

パイプライン出力があり、free -o -m | awk '{print $4}'1行目と2行目の2つの数字を段階的に実行しようとしています。したがって、2つの正規表現が必要です。試しましたが、^[0-9]{1,3}$これはすべての項目と一致します。 111 222 333です

最初の正規表現は111で、2番目の正規表現は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;

関連情報