Bash Script: Comparando dois arquivos de texto

Bash Script: Comparando dois arquivos de texto

Estou me perguntando como posso fazer isso de forma eficiente. Dados dois arquivos, digamos a.txt e b.txt, quero escrever um script bash para fazer o seguinte:

Cada linha em a.txt contendo '*' que não existe em b.txt será adicionada no final de b.txt com um carimbo de data/hora.

Posso fazer a primeira e a última parte, grep "*" a.txt echo "$(date)" >> b.txt mas não sei o resto.

Responder1

Sugiro que você use um terceiro arquivo para resultados, para não bagunçar o arquivo b.txt. Você poderia tentar isso:

cp b.txt c.txt 
for line in $(grep '*' a.txt); do
    # for each line found in a.txt
    echo "Found: $line"
    grep -q $line b.txt   # check its presence in b.txt
    if [ $? -ne 0 ]; then
        # if the result of the grep is not equal to 0
        # it means that the line has not been found in b.txt
        # then print the line in a third file with the leading timestamp
        echo "$(date): $line" >> c.txt
    fi
done

É claro que talvez você deva apenas melhorar o grep, já que não sei como a linha onde você está pesquisando o '*' é composta.

informação relacionada