@Printip

Почему Diff не работает?

Есть файл a.txt в нем 10 миллионов записей
Есть файл b.txt в нем 100 миллионов записей
Каждая запись с новой строки.

Задача a.txt минус b.txt

"Решение"

diff a.txt b.txt > c.txt
cat c.txt | grep ">" > result.txt

wc result.txt = 100 миллионов записей
Когда должно было получиться 90 миллионов записей.

Скажите что я делаю не так?
  • Вопрос задан
  • 456 просмотров
Решения вопроса 1
@Printip Автор вопроса
Нашел проблему. Надо было сначала файл b.txt отсортировать. Отсортировал и все заработало.

cat b.txt | sort
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
А такая команда правильно показывает?
diff -w a.txt b.txt | grep -e '^>' | wc -l
Ответ написан
@kryvel
Системный администратор
не на чем сейчас попробовать, но можно сделать по другому.
если мне не изменяет память:
grep -v -f b.txt a.txt
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Если записи можно отсортировать попробуйте comm:

comm -2 -3 <(sort a.txt) <(sort b.txt)

Есть файл a.txt в нем 10 миллионов записей
Есть файл b.txt в нем 100 миллионов записей
Каждая запись с новой строки.

Задача a.txt минус b.txt
...
должно было получиться 90 миллионов записей.

У вас или количество строк в файлах перепутано, или b.txt - a.txt. В существующей постановке не может получиться больше 10 млн. записей в результате.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы