検索する文字列が23個あり、その文字列をファイルに返したいと思います。
次のコードを取得しました。
users='User1\|User2\|User3\|User4\|User5\|User6\|User7\|User8\|User9\|User10\|User11\|User12..User23'
希望の出力:
User1 is in the file
User2 is not in the file
...
User 23 is in the file
どうすればいいのかわかりません。配列を考えていますが、可能であればいくつかのヒントを得たいと思います。よろしくお願いします。
ベストアンサー1
配列を使用して下さい:
users=(User1 User2 User3 User4) # et cetera
for i in "${users[@]}"; do
echo -n "$user is "
if grep -q "$user" inputfile; then
echo "present"
else
echo "not present"
fi
done
grep -q
検索は実行されますが、出力は返されないため、if
テストで自動的に使用できます。
または、各ユーザーを名前付きファイルに入れUsers
たら、次の操作を実行できます。
grep -o -f Users inputfile
これにより、見たすべてのユーザーのリストが出力されます。現在のユーザーと不在ユーザーを表示するには:
echo "Users present:"
grep -o -f Users inputfile
echo "Users absent:"
grep -vo -f Users inputfile