Como posso comparar strings de dois arquivos no shell script?

1

O primeiro campo é o nome de usuário, o segundo é a senha e o último indica a ação (login / registro)

Arquivo 1: entrada do usuário

hello,world,register

Arquivo 2: banco de dados de texto simples

admin,123
user,321
foo,bar

Como posso comparar a entrada do usuário com o banco de dados para verificar se o nome de usuário já existe?

Eu tentei o código a seguir, mas não está funcionando:

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: i need a solution without awk,sed or find, just grep and cut

    
por HenriqueHBR 04.02.2018 / 17:16

3 respostas

2

grep + cut approach:

if grep -qwf <(cut -d, -f1 user_input) database; then 
    echo "This username is already in use, try again!"
else
    echo "Successfully registered!"
fi
    
por 04.02.2018 / 17:31
0

Uma solução que usa apenas bash incorporado e 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
    
por 04.02.2018 / 17:31
0

Eu fiz usando o comando cut, para loop e se a condição

#!/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
    
por 04.02.2018 / 21:42