쉘 스크립트에서 두 파일의 문자열을 비교하는 방법은 무엇입니까?

쉘 스크립트에서 두 파일의 문자열을 비교하는 방법은 무엇입니까?

첫 번째 필드는 사용자 이름, 두 번째 필드는 비밀번호, 마지막 필드는 작업(로그인/등록)을 나타냅니다.

파일 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

관련 정보