如何在 shell 脚本中比较两个文件的字符串?

如何在 shell 脚本中比较两个文件的字符串?

第一个字段是用户名,第二个字段是密码,最后一个字段表示操作(登录/注册)

文件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

相关内容