URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7356
[ Назад ]

Исходное сообщение
"diff, или как это можно сделать?"

Отправлено slider , 08-Май-08 14:02 
Привет! Прошу помощи или совета.
Вкратце: есть выходной поток одной программки, которая выдает N строк по cron. Мне нужно хранить все уникальные строки, которые она выдает в одном файле, и генерить файл со строками, которых не было раньше, в другом. А сформировав этот файл с отличиями, пристыковать эти отличия к общему списку.

Выглядит вроде просто, да что-то не могу сообразить, чем и как делать. :-[


Содержание

Сообщения в этом обсуждении
"diff, или как это можно сделать?"
Отправлено phpcoder , 08-Май-08 14:15 
>Привет! Прошу помощи или совета.
>Вкратце: есть выходной поток одной программки, которая выдает N строк по cron.
>Мне нужно хранить все уникальные строки, которые она выдает в одном
>файле,

sort -u >uniq.list

> и генерить файл со строками, которых не было раньше,

что-то вроде comm -13 before file >new.list

>в другом. А сформировав этот файл с отличиями, пристыковать эти отличия к
>общему списку.

cat new >>full.list

>Выглядит вроде просто, да что-то не могу сообразить, чем и как делать.
>:-[

man sort
man comm


"diff, или как это можно сделать?"
Отправлено slider , 08-Май-08 15:05 
Спасибо!

>sort -u >uniq.list

это я сообразил. хотелось "в одну строчку сделать"

>man comm

оказался очень полезным.

результат у меня получился такой:
cat ./from.list | sort -u ./file.common - | comm -13 ./file.common - | tee -a ./file.common > ./file.new


"diff, или как это можно сделать?"
Отправлено phpcoder , 08-Май-08 15:08 
>результат у меня получился такой:
>cat ./from.list | sort -u ./file.common - | comm -13 ./file.common - | tee -a ./file.common > ./file.new

Можно и cat выкинуть.

sort -u ./file.common <./from.list | comm -13 ./file.common - | tee -a ./file.common > ./file.new


"diff, или как это можно сделать?"
Отправлено slider , 08-Май-08 15:15 
вот с конструкцией <...> у меня всегда проблемы :)))
а cat у меменя здесь заменяет stdout, потому как в действительности я должен подхватывать именно его.