Сравнение двух файлов столбиком

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Grih65kop
Сообщения: 145

Сравнение двух файлов столбиком

Сообщение Grih65kop »

Есть два файла:

1.txt

Код: Выделить всё

1030-01-01    14.38.25.14       abc
3010-01-22    14.48.4.28       abc
4210-01-03    11.44.27.22       abc
1030-01-01    14.35.23.14       abc
3010-01-22    14.47.4.28       abc
4210-01-03    11.42.27.21       abc
1030-01-01    14.38.25.14       abc
3010-01-22    14.44.3.28       abc
4210-01-03    11.44.17.29       abc


2.txt

Код: Выделить всё

1030-01-01    14.28.61.11       abc
3010-01-22    14.48.4.78       abc
4210-01-03    11.44.23.22       abc
1030-01-01    14.35.23.44       abc
3010-01-22    14.47.4.28       abc
4210-01-03    11.42.57.51       abc
1030-01-01    14.38.15.14       abc
3010-01-22    14.44.2.28       abc
4210-01-03    11.44.15.29       abc


Меня интересует второй столбик, выдергиваю его и удоляю дубли следующим образом:

Код: Выделить всё

awk -F\  '{ print $2 }' 1.txt | sort | uniq
awk -F\  '{ print $2 }' 2.txt | sort | uniq


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

Код: Выделить всё

1.txt              2.txt
11.42.27.21
              11.42.57.51
              11.44.15.29
11.44.17.29
              11.44.23.22
14.44.3.28
14.47.4.28    14.47.4.28

....
т.е. вывод в два столбика, сортировка, так как раз сразу все одинаковые строки будут видны.
Заранее спасибо.
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Сравнение двух файлов столбиком

Сообщение allez »

Может, вам стоит попробовать diff?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Сравнение двух файлов столбиком

Сообщение drBatty »

diff
vimdiff
kdiff3
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Grih65kop
Сообщения: 145

Re: Сравнение двух файлов столбиком

Сообщение Grih65kop »

awk -F\ '{ print $2 }' 1.txt | sort | uniq >11.txt
awk -F\ '{ print $2 }' 2.txt | sort | uniq>22.txt
diff --si 11.txt 22.txt | sort

Код: Выделить всё

11.42.27.21                                                   | 11.42.57.51
11.44.17.29                                                   | 11.44.15.29
11.44.27.22                                                   | 11.44.23.22
14.35.23.14                                                   | 14.28.61.11
14.38.25.14                                                   | 14.35.23.44
                                                              > 14.44.2.28
14.44.3.28                                                    | 14.38.15.14
14.47.4.28                                                      14.47.4.28
14.48.4.28                                                    | 14.48.4.78

т.е. понятно, только строка 14.47.4.28 в обоих файлах. Меня смущает слишком много действий (т.е. три команды), возможно ли это сократить в одну?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Сравнение двух файлов столбиком

Сообщение sash-kan »

Shell

$ comm <(cut -d' ' -f 5 file1 | sort -n) <(cut -d' ' -f 5 file2 | sort -n) 11.42.27.21 11.42.57.51 11.44.15.29 11.44.17.29 11.44.23.22 11.44.27.22 14.28.61.11 14.35.23.14 14.35.23.44 14.38.15.14 14.38.25.14 14.38.25.14 14.44.2.28 14.44.3.28 14.47.4.28 14.48.4.28 14.48.4.78
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Сравнение двух файлов столбиком

Сообщение eddy »

sash-kan, спасибо! А я про comm и не знал, писал сам аналог "comm -1" или "comm -3". Правда, моя программка в предварительной сортировке не нуждалась :)
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Grih65kop
Сообщения: 145

Re: Сравнение двух файлов столбиком

Сообщение Grih65kop »

Решил это дело следующим образом:

diff --si <(cut -f"" 3 1.txt | sort -n) <(cut -f"" 3 2.txt | sort -n)

Очень интересная конструкция, не встречал раньше такой, спасибо. Расскажите про нее подробней, а то делаю по примеру но не совсем понимаю.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Сравнение двух файлов столбиком

Сообщение sash-kan »

eddy писал(а):
23.04.2010 00:01
А я про comm и не знал
а вы почитайте таки info coreutils. глядишь, ещё что-нибудь полезное всплывёт.

Grih65kop писал(а):
23.04.2010 00:20
Расскажите про нее подробней
про подстановку stdin-а или stdout-а процесса в виде файлового дескриптора другому процессу?
$ man -P cat bash | less -p"Process Substitution"
не везде это можно применить. в частности, программы, пытающиеся открыть файл с доступом и на чтение, и на запись, конечно же, заругаются. их не удовлетворит ни <(), ни >().
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: