첫 번째 필드는 사용자 이름, 두 번째 필드는 비밀번호, 마지막 필드는 작업(로그인/등록)을 나타냅니다.
파일 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
추신: 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