次の2つの数字を含むファイルがあります。
ファイル1
1
0
ファイル2
0
1
ファイル3
3
3
1行目の数字と2行目の数字を比較したいです。最初の行の数字が大きい場合は echo:Higher
最初の行の数字が小さい場合は echo: Lower
2 行の数字が同じ場合は echo:Same
どうすればいいですか?
答え1
ファイルを繰り返します。各ファイルについて2つの数字を読み、比較します。
for file in file1 file2 file3; do
{ read num1; read num2; } <"$file"
if [ "$num1" -gt "$num2" ]; then
echo Higher
elif [ "$num1" -lt "$num2" ]; then
echo Lower
else
echo Same
fi
done
シェルの算術比較は-gt
と で行われます-lt
。他の算術比較演算子には-ge
、、-le
とがあります-eq
。望むよりman test
。演算子<
とは>
辞書式の順序をテストし、ここで使用するものではありません。
または以下を使用してawk
:
awk -v RS='' -F '\n' '{ print ($1 > $2 ? "Higher" : ($1 < $2 ? "Lower" : "Same")) }' file1 file2 file3