Рейтинг:0

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

флаг by

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

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

grep "*" a.txt эхо "$(дата)" >> b.txt
pLumo avatar
флаг in
Пожалуйста, отредактируйте свой вопрос и добавьте несколько примеров ваших файлов и ожидаемый результат.
terdon avatar
флаг cn
В bash нет способа быть удаленно эффективным. Это _нужно_ быть bash? Я вижу, вы, по крайней мере, открыты для инструментов, отличных от bash, таких как `grep`, так можем ли мы также использовать `awk`, `sed`, `perl` и т. д.? Оболочка, любая оболочка — ужасный инструмент для обработки текста: она всегда будет медленной и неэффективной.
Taro avatar
флаг by
@terdon спасибо, что просветили меня.
Рейтинг:0
флаг za

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

cp b.txt c.txt 
для строки в $(grep '*' a.txt); делать
    # для каждой строки, найденной в .txt
    echo "Найдено: $строка"
    grep -q $line b.txt # проверить его наличие в b.txt
    если [$? -ne 0]; тогда
        # если результат grep не равен 0
        # значит строка не найдена в b.txt
        # затем напечатайте строку в третьем файле с начальной меткой времени
        echo "$(дата): $line" >> c.txt
    фи
сделано

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.