LINUX.ORG.RU
решено ФорумAdmin

Сравнения 2 файлов + вывод

 , ,


0

1

Есть 2 файла (А и Б) в файла А список ip вытащенный из логов, в файле Б список разрешённых ip. Надо сравнить эти два файла и на выходе получить список А ...господи как сложно описать словами, что надо сделать, проще кодом

cat a.txt | grep -v ...

Я знаю, все многие ниже перечисленные примеры я пробовал, но проблема оказалось совсем в другом, благо ваши ответы навели на мою невнимательность и все «fixed»



Последнее исправление: whitedevil (всего исправлений: 1)
for i in $(cat a.txt); do grep $i b.txt 1>/dev/null 2>/dev/null && echo $i ; done

Это выведет все адреса из a.txt, которые есть в b.txt. Если надо наоборот чтоб были адреса которых нет - замените && на ||.

micronekodesu ★★★
()

man grep

 
grep [OPTIONS] -f FILE ... [FILE...]

zaharov
()
Ответ на: комментарий от legolegs

comm выводит ip со списка Б которые не совпадают со списком А, но нужно то на оборот.

comm -12  A.txt Б.txt
ip-B
ip-B
ip-B
ip-B
ip-B
ip-B
ip-B
ip-B
ip-B
ip-B

whitedevil
() автор топика
Ответ на: комментарий от legolegs

Да вот ломаю голову как это словами то объяснить. Мне нужно вывести список IP из файла A исключая при этом IP которые есть в списке Б.

whitedevil
() автор топика
Ответ на: комментарий от whitedevil

Подбирай комбинацию этих ключей.

With  no options, produce three-column output.  Column one contains lines unique to FILE1, column two contains lines unique
       to FILE2, and column three contains lines common to both files.

       -1     suppress column 1 (lines unique to FILE1)

       -2     suppress column 2 (lines unique to FILE2)

       -3     suppress column 3 (lines that appear in both files)

Radjah ★★★★★
()
Последнее исправление: Radjah (всего исправлений: 1)
Ответ на: комментарий от whitedevil

Если имеется ввиду, что нужно то, что есть в А, но нет в Б, и только это:

diff --changed-group-format='%<' --unchanged-group-format='' a b

Niroday
()
Ответ на: комментарий от whitedevil

Это будет comm -23 A.txt Б.txt - мы оставлем колонку 1, где записи, уникальные для первого файла и подавляем 2 и 3, где уникальные для 2 и парные записи.

Файлы должны быть отсортированы.

legolegs ★★★★★
()

legolegs дело советует, но если предварительно сортировать неохота, то можно просто grep-ом.

grep -F -f b.txt -v a.txt

unterwulf
()
Ответ на: комментарий от legolegs

Спасибо, навел на причину проблемы, список А имел много совпадений, по этому вывод после comm всё равно имел ip из списка Б. uniq спас ситуацию.

whitedevil
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.