Скрипт Bash: сравнение двух текстовых файлов

Скрипт Bash: сравнение двух текстовых файлов

Мне интересно, как я могу сделать это эффективно. Имея два файла, скажем a.txt и b.txt, я хочу написать bash-скрипт, чтобы сделать следующее:

Каждая строка в файле a.txt, содержащая «*», которой нет в файле b.txt, будет добавлена ​​в конец файла b.txt с отметкой времени.

Первую и последнюю части я могу сделать, grep "*" a.txt echo "$(date)" >> b.txt а вот как насчет остального — не знаю.

решение1

Я предлагаю вам использовать третий файл для результатов, чтобы не портить файл b.txt. Вы можете попробовать это:

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

Понятно, что, возможно, вам следует просто улучшить grep, поскольку я не знаю, из чего состоит строка, в которой вы ищете «*».

Связанный контент