第一个字段是用户名,第二个字段是密码,最后一个字段表示操作(登录/注册)
文件1:用户输入
hello,world,register
文件2:纯文本数据库
admin,123
user,321
foo,bar
如何将用户输入与数据库进行比较以检查用户名是否已存在?
我已经尝试过以下代码,但它不起作用:
if cut -d "," -f1 user_input | grep -wf user_input database; then
echo "This username is already in use, try again!"
else
echo "Successfully registered!"
fi
PS:我需要一个没有 awk、sed 或 find 的解决方案,只需 grep 和 cut
答案1
grep
+cut
方法:
if grep -qwf <(cut -d, -f1 user_input) database; then
echo "This username is already in use, try again!"
else
echo "Successfully registered!"
fi
答案2
bash
仅使用内置和 的解决方案grep
。
while IFS=',' read -r username
do
if grep -wq $username database
then
echo "This username is already in use, try again!"
else
echo "Successfully registered!"
fi
done < user_input
答案3
我通过使用 cut 命令、for 循环和 if 条件完成
#!/bin/bash
i=`cut -d "," -f1 user_input.txt`
#echo $i
for j in `cut -d "," -f1 database.txt`
do
if [[ $i == $j ]]
then
echo $j "already exsists"
else
echo $j "doesn't exsists"
fi
done