
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.