4で割れる数字を印刷する方法(whileループ)またはawk

4で割れる数字を印刷する方法(whileループ)またはawk

Linuxで難しい問題に直面しました。 4で割った数字を印刷する必要があります。

次のコードは偶数を印刷するのに役立ちますが、4に分割することはできません。

echo 5 | awk -F, '$0%2{$0++}1'

出力:

6

この問題を解決する方法はわかりませんが、whileループを使用して値を4で割ることができるまで初期値を追加/増やしてから、使用可能な変数に値を挿入するだけです。

たとえば、

val=5
5/4=  1.25 not divisible

val=val+1
val=6
6/4=  1.5 not divisible

val=val+1
val=7
7/4=  1.75

val=val+1
val=8
8/4=2 is divisible

値が4で割られると、この例の値8は、4で割られる答えの代わりに出力変数にエコーされます。

答え1

そしてawk

echo 5 | awk '{$0=int($0/4+1)*4}1'

説明する:

  • $0/4+1値が分割さ4れ、結果が増加します1
  • int(n)その後、awksに丸められます。int()
  • n*44今、私たちは分割することができ、次に大きな数を得るためにそれを掛けます4
  • {...}1最後1は値を出力します。

16これで値が印刷されます12


分割できる値を一定に保つには、4次のように使用しますawk

awk '{$0=int($0/4+.75)*4}1'

答え2

#!/bin/bash
i=5
while [ 1 ]
do
        if [ `echo $i%4 | bc` -eq 0 ]; then
                echo $i
                exit
        else
                i=`echo $i+1|bc`
        fi
done

このスクリプトを試してくださいwhileループ

関連情報