The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Сравнение файлов с разным количеством столбцов"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Сравнение файлов с разным количеством столбцов"  +/
Сообщение от dsp976 email on 03-Мрт-16, 10:47 
Добрый день.
Подскажите как можно организовать сравнение двух файлов? Один файл - столбец с данными. Второй файл - первый столбец подобен первому файлу, а второй столбец содержит другие данные.

  файл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.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Сравнение файлов с разным количеством столбцов"  +/
Сообщение от fail on 03-Мрт-16, 11:27 
> Добрый день.

...
> Необходимо сравнить файлы по первому столбцу и на выходе получить различия либо
> вместе с данными из второго столбца (если в первом файле такой
> нет), либо без них (если такая строка есть только в первом
> файле). Я сейчас могу только выбрать первый столбец из второго файла
> и сравнить его с первым файлом с помощью diff.

http://пoиcкoвик => sed, awk, etc.. 5 минут

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Сравнение файлов с разным количеством столбцов"  –1 +/
Сообщение от dsp976 email on 03-Мрт-16, 11:33 
> http://пoиcкoвик => sed, awk, etc.. 5 минут

пройденный этап, ничего в голову не приходит


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Сравнение файлов с разным количеством столбцов"  +/
Сообщение от Andrey Mitrofanov on 03-Мрт-16, 14:26 
>> Добрый день.
> ...
>> Необходимо сравнить файлы по первому столбцу и на выходе получить различия либо
>> вместе с данными из второго столбца (если в первом файле такой
>> нет), либо без них (если такая строка есть только в первом
>> файле). Я сейчас могу только выбрать первый столбец из второго файла
>> и сравнить его с первым файлом с помощью diff.
> http://пoиcкoвик => sed, awk, etc.. 5 минут

Вообще-то, man join.

Условия - файлы сортированы, сортированы одинаково и  join согласен с этим. Также возможны варианты (разночтения) с разбиением на поля ("столбцы").

Да, с такой "кухней", кому и awk проще. Но неокрепшие разумы бегут мыслей об авках.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Сравнение файлов с разным количеством столбцов"  +/
Сообщение от Andrey Mitrofanov on 03-Мрт-16, 14:27 
> Добрый день.
> Подскажите как можно организовать сравнение двух файлов? Один файл - столбец с
> данными. Второй файл - первый столбец подобен первому файлу, а второй
> столбец содержит другие данные.

И ты уже сравнил:

>Я сейчас могу только выбрать первый столбец из второго файла
> и сравнить его с первым файлом с помощью diff.

Задача решена! Молодейц!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Сравнение файлов с разным количеством столбцов"  –1 +/
Сообщение от dsp976 email on 03-Мрт-16, 15:20 
>> Добрый день.
>> Подскажите как можно организовать сравнение двух файлов? Один файл - столбец с
>> данными. Второй файл - первый столбец подобен первому файлу, а второй
>> столбец содержит другие данные.
> И ты уже сравнил:
>>Я сейчас могу только выбрать первый столбец из второго файла
>> и сравнить его с первым файлом с помощью diff.
> Задача решена! Молодейц!

Не решена. diff выводит результаты без второго столбца. join отсутствует там где скрипт будет исполняться, в busybox. В man awk я в упор не вижу как можно это реализовать, не хватает опыта его применения.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Сравнение файлов с разным количеством столбцов"  +/
Сообщение от дима email(??) on 03-Мрт-16, 15:35 
>[оверквотинг удален]
>>> Подскажите как можно организовать сравнение двух файлов? Один файл - столбец с
>>> данными. Второй файл - первый столбец подобен первому файлу, а второй
>>> столбец содержит другие данные.
>> И ты уже сравнил:
>>>Я сейчас могу только выбрать первый столбец из второго файла
>>> и сравнить его с первым файлом с помощью diff.
>> Задача решена! Молодейц!
> Не решена. diff выводит результаты без второго столбца. join отсутствует там где
> скрипт будет исполняться, в busybox. В man awk я в упор
> не вижу как можно это реализовать, не хватает опыта его применения.

echo tt zzz kkk | awk '{ print $1 " " $2 " " $3}'

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Сравнение файлов с разным количеством столбцов"  –1 +/
Сообщение от dsp976 email on 03-Мрт-16, 15:48 
> echo tt zzz kkk | awk '{ print $1 " " $2
> " " $3}'

echo мысли уловил не | awk '{print $3 " " $2 " " $1}'

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Сравнение файлов с разным количеством столбцов"  +/
Сообщение от дима email(??) on 03-Мрт-16, 17:25 
>> echo tt zzz kkk | awk '{ print $1 " " $2
>> " " $3}'
> echo мысли уловил не | awk '{print $3 " " $2 "
> " $1}'

сделать файл_3 только с нужными данными и сравнивать файл_1 и файл_3

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

11. "Сравнение файлов с разным количеством столбцов"  +/
Сообщение от dsp976 email on 03-Мрт-16, 19:45 
> сделать файл_3 только с нужными данными и сравнивать файл_1 и файл_3

Я с самого начала делал так:

awk '{print $1}' file2 > file3
diff -u file1 file3

Как и положено, получал различия между ними. Но мне нужны данные всех трех столбцов. Надо чтобы в выводе участвовал и второй столбец из файл2.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

9. "Сравнение файлов с разным количеством столбцов"  +1 +/
Сообщение от михалыч (ok) on 03-Мрт-16, 17:26 
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/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


fgrep -vFf OLD NEW
e/e/e 8888
n/n/n 7777

cut -f1 -d " " NEW > TMP
fgrep -vFf TMP OLD
b/b/b
f/f/f


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Сравнение файлов с разным количеством столбцов"  –1 +/
Сообщение от dsp976 email on 03-Мрт-16, 19:35 
> 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 выдал мне те же результаты.

Спасибо)

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Сравнение файлов с разным количеством столбцов"  +/
Сообщение от dsp976 email on 03-Мрт-16, 20:52 
> После этого я повторил команду с файлами OLD и NEW, но у
> меня не появилось никакого вывода. Странно.. сейчас буду разбираться в чем
> причина.

Разобрался, в конце OLD была пустая строка. Сейчас все норм, такой же вывод.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

13. "Сравнение файлов с разным количеством столбцов"  +/
Сообщение от pavlinux (ok) on 08-Мрт-16, 00:52 
через stdout, не?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру