Добрый день.
Подскажите как можно организовать сравнение двух файлов? Один файл - столбец с данными. Второй файл - первый столбец подобен первому файлу, а второй столбец содержит другие данные.файл1 файл2
a/a/a a/a/a 1111
b/b/b e/e/e 8888
c/c/c c/c/c 3333
... ...
z/z/z z/z/z 2222
Необходимо сравнить файлы по первому столбцу и на выходе получить различия либо вместе с данными из второго столбца (если в первом файле такой нет), либо без них (если такая строка есть только в первом файле). Я сейчас могу только выбрать первый столбец из второго файла и сравнить его с первым файлом с помощью diff.
> Добрый день....
> Необходимо сравнить файлы по первому столбцу и на выходе получить различия либо
> вместе с данными из второго столбца (если в первом файле такой
> нет), либо без них (если такая строка есть только в первом
> файле). Я сейчас могу только выбрать первый столбец из второго файла
> и сравнить его с первым файлом с помощью diff.http://пoиcкoвик => sed, awk, etc.. 5 минут
> http://пoиcкoвик => sed, awk, etc.. 5 минутпройденный этап, ничего в голову не приходит
>> Добрый день.
> ...
>> Необходимо сравнить файлы по первому столбцу и на выходе получить различия либо
>> вместе с данными из второго столбца (если в первом файле такой
>> нет), либо без них (если такая строка есть только в первом
>> файле). Я сейчас могу только выбрать первый столбец из второго файла
>> и сравнить его с первым файлом с помощью diff.
> http://пoиcкoвик => sed, awk, etc.. 5 минутВообще-то, man join.
Условия - файлы сортированы, сортированы одинаково и join согласен с этим. Также возможны варианты (разночтения) с разбиением на поля ("столбцы").
Да, с такой "кухней", кому и awk проще. Но неокрепшие разумы бегут мыслей об авках.
> Добрый день.
> Подскажите как можно организовать сравнение двух файлов? Один файл - столбец с
> данными. Второй файл - первый столбец подобен первому файлу, а второй
> столбец содержит другие данные.И ты уже сравнил:
>Я сейчас могу только выбрать первый столбец из второго файла
> и сравнить его с первым файлом с помощью diff.Задача решена! Молодейц!
>> Добрый день.
>> Подскажите как можно организовать сравнение двух файлов? Один файл - столбец с
>> данными. Второй файл - первый столбец подобен первому файлу, а второй
>> столбец содержит другие данные.
> И ты уже сравнил:
>>Я сейчас могу только выбрать первый столбец из второго файла
>> и сравнить его с первым файлом с помощью diff.
> Задача решена! Молодейц!Не решена. diff выводит результаты без второго столбца. join отсутствует там где скрипт будет исполняться, в busybox. В man awk я в упор не вижу как можно это реализовать, не хватает опыта его применения.
>[оверквотинг удален]
>>> Подскажите как можно организовать сравнение двух файлов? Один файл - столбец с
>>> данными. Второй файл - первый столбец подобен первому файлу, а второй
>>> столбец содержит другие данные.
>> И ты уже сравнил:
>>>Я сейчас могу только выбрать первый столбец из второго файла
>>> и сравнить его с первым файлом с помощью diff.
>> Задача решена! Молодейц!
> Не решена. diff выводит результаты без второго столбца. join отсутствует там где
> скрипт будет исполняться, в busybox. В man awk я в упор
> не вижу как можно это реализовать, не хватает опыта его применения.echo tt zzz kkk | awk '{ print $1 " " $2 " " $3}'
> echo tt zzz kkk | awk '{ print $1 " " $2
> " " $3}'echo мысли уловил не | awk '{print $3 " " $2 " " $1}'
>> echo tt zzz kkk | awk '{ print $1 " " $2
>> " " $3}'
> echo мысли уловил не | awk '{print $3 " " $2 "
> " $1}'сделать файл_3 только с нужными данными и сравнивать файл_1 и файл_3
> сделать файл_3 только с нужными данными и сравнивать файл_1 и файл_3Я с самого начала делал так:
awk '{print $1}' file2 > file3
diff -u file1 file3Как и положено, получал различия между ними. Но мне нужны данные всех трех столбцов. Надо чтобы в выводе участвовал и второй столбец из файл2.
grep и cut есть?cat OLD
a/a/a
b/b/b
c/c/c
d/d/d
f/f/f
g/g/g
m/m/m
z/z/zcat NEW
a/a/a 1111
e/e/e 8888
c/c/c 3333
d/d/d 4444
g/g/g 5555
m/m/m 6666
n/n/n 7777
z/z/z 2222
fgrep -vFf OLD NEW
e/e/e 8888
n/n/n 7777cut -f1 -d " " NEW > TMP
fgrep -vFf TMP OLD
b/b/b
f/f/f
> grep и cut есть?да, есть
>[оверквотинг удален]
> z/z/z
> cat NEW
> a/a/a 1111
> e/e/e 8888
> c/c/c 3333
> d/d/d 4444
> g/g/g 5555
> m/m/m 6666
> n/n/n 7777
> z/z/z 2222Для чистоты эксперимента создал эти пару файлов OLD и NEW..
> fgrep -vFf OLD NEW
> e/e/e 8888
> n/n/n 7777..но сначала в параметрах указал свои пару файлов - и все отлично отработало! Показало мне отсутствующую в файл1 строку из файл2, состоящую из двух полей. По-сути, это главное что мне нужно было. Обратная ситуация когда в файле1 находится строка, состоящая из одного поля, отсутствующая в файле2 нужная, но не настолько важная как первая.
После этого я повторил команду с файлами OLD и NEW, но у меня не появилось никакого вывода. Странно.. сейчас буду разбираться в чем причина.
> cut -f1 -d " " NEW > TMP
> fgrep -vFf TMP OLD
> b/b/b
> f/f/fЭта команда у меня отработала точно с таким же выводом. Я так понимаю fgrep и grep -F - одно и тоже, поэтому grep -vFf выдал мне те же результаты.
Спасибо)
> После этого я повторил команду с файлами OLD и NEW, но у
> меня не появилось никакого вывода. Странно.. сейчас буду разбираться в чем
> причина.Разобрался, в конце OLD была пустая строка. Сейчас все норм, такой же вывод.
через stdout, не?