条件付きの複数の列 (フィールド) を持つ多数の行を持つファイルでループを実行しようとしています。
サンプル ファイル ( file.txt
) は次のようになります。
aaa bbb ccc
ddd kkk
fff ggg hhh lll
ooo
sss
...等...
最初のフィールドの最初の行をループし、名前が存在する場合は 2 行目に続く bash スクリプトを書きたいと思います。最初のフィールドの最初の行の名前が存在しない場合は、次に 2 番目のフィールドをテストし (この場合は "bbb" という名前をテストします)、4 番目まで同様にテストします。特定の行に対して最大 4 つのフィールドと最小 1 つのフィールド (列) を持つ可変フィールド番号があります。
for i in cat file.txt; do
echo $i
if [ -e $i ]; then
echo "name exists"
else
echo "name does not exist"
fi
done
明らかに、上記のスクリプトは行と列の両方をテストします。しかし、最初のフィールドが存在しない場合は 2 番目、3 番目、4 番目のフィールドにループし、2 番目のフィールドが存在しない場合は 3 番目のフィールドをテストし、4 番目までループしたいと考えていました。