grep -i -f echos.txt ech00830.avl
Hо как и ожидалось в выводе я получил кучу лишних эх которые попали
под маску. То есть если в файле echos.txt была эха RU.CARS, то в вывод
у меня попал не только RU.CARS но и RU.CARS.AUDI, RU.CARS.BMW и тд..
Получилось! Спасибо!grep -i -f echos.txt ech00830.avlsed 's/\(.*\)/^\1\\s/' echos.txt >echos_regexp.txt
Hо как и ожидалось в выводе я получил кучу лишних эх которые
попали под маску. То есть если в файле echos.txt была эха
RU.CARS, то в вывод у меня попал не только RU.CARS но и
RU.CARS.AUDI, RU.CARS.BMW и тд..
grep -i -f echos_regexp.txt ech00830.avl
grep -i -f echos.txt ech00830.avl
Hо как и ожидалось в выводе я получил кучу лишних эх которые
попали под маску. То есть если в файле echos.txt была эха
RU.CARS, то в вывод у меня попал не только RU.CARS но и
RU.CARS.AUDI, RU.CARS.BMW и тд..
sed 's/\(.*\)/^\1\\s/' echos.txt >echos_regexp.txtПолучилось! Спасибо!
grep -i -f echos_regexp.txt ech00830.avl
Только из вывода пропали эхи, которые есть в echos.txt, но которых нет
в ech00830.avl :)
Йес! То что надо! Спасибо, ты настоящий друг!sed 's/\(.*\)/^\1\\s/' echos.txt >echos_regexp.txt
grep -i -f echos_regexp.txt ech00830.avl
Получилось! Спасибо!Тогда твоя задача решается вообще без grep, а с join.
Только из вывода пропали эхи, которые есть в echos.txt, но
которых нет в ech00830.avl :)
sort echos.txt | join -i -a1 - ech00830.avl
А как можно взять в "" описание эхи?grep -i -f echos.txt ech00830.avlsed 's/\(.*\)/^\1\\s/' echos.txt >echos_regexp.txt
Hо как и ожидалось в выводе я получил кучу лишних эх которые
попали под маску. То есть если в файле echos.txt была эха
RU.CARS, то в вывод у меня попал не только RU.CARS но и
RU.CARS.AUDI, RU.CARS.BMW и тд..
sed 's/\(.*\)/^\1\\s/' echos.txt >echos_regexp.txtА как можно взять в "" описание эхи?
Чтоб было вот так:
ECHO.TAG "описание"
sed s/\( .*$\)/"\1\"/ ech00830.avl
о на деле, нет смысла расставлять кавычки, если там нет пробелов, такПопробовал, получилось! Теперь всё как у бабы Кати в трусах! Спасибо!
что вот так красивее
sort echos.txt | join -i -a1 - ech00830.avl | sed -e 's/\r//; s/^\(\S\+\s\+\)\(\S\+\s\+.*\)$/\1"\2"/'
Объединяю с моим предыдущим "inner join".
sort echos.txt | join -i -a1 - ech00830.avl | sed -e 's/\r//; s/^\(\S\+\s\+\)\(.*\)$/\1"\2"/'
о на деле, нет смысла расставлять кавычки, если там нет пробелов, так
что вот так красивее
sort echos.txt | join -i -a1 - ech00830.avl | sed -e 's/\r//; s/^\(\S\+\s\+\)\(\S\+\s\+.*\)$/\1"\2"/'
Объединяю с моим предыдущим "inner join".
sort echos.txt | join -i -a1 - ech00830.avl | sed -e 's/\r//;
s/^\(\S\+\s\+\)\(.*\)$/\1"\2"/'
о на деле, нет смысла расставлять кавычки, если там нет пробелов,
так что вот так красивее sort echos.txt | join -i -a1 -
ech00830.avl | sed -e 's/\r//;
s/^\(\S\+\s\+\)\(\S\+\s\+.*\)$/\1"\2"/'
В общем я увлёкся сабжем и решил создать файл с описанием ваще всех эх
со всех линков :-\ Потом сделать этот файл доступным фидошной общественности, вдруг кому-то пригодится :)
Чтоб начать мне надо понимать к каким именно эхам у меня нет описания.
Вот например мой файл с описаниями:
=== Cut ===
MO.CARS "Эха Московских автомобилистов"
MO.CARS.AUDIO "Все об авто-аудиоаппаратуре"
MO.CARS.AUDI_VW "Общение владельцев AUDI и VolskWagen"
MO.CARS.NIVA "Вcе об автомобилях Hива"
MO.CARS.OKA "Все об автомобиле ОКА"
RU.CARS.LADA "Автомобили ВАЗ" === Cut ===
Вот файл от линка:
=== Cut ===
ru.cars
ru.cars.daewoo
ru.cars.lada
=== Cut ===
Как получить в вывод эху ru.cars.daewoo ?
Как получить в вывод эху ru.cars.daewoo ?Ты попался. :)
В общем я увлёкся сабжем и решил создать файл с описанием ваще всех эх
со всех линков :-\ Потом сделать этот файл доступным фидошной общественности, вдруг кому-то пригодится :)
Еще немного и ты придумаешь грузить их в базу данных =)Объединяю с моим предыдущим "inner join".
sort echos.txt | join -i -a1 - ech00830.avl | sed -e 's/\r//;
s/^\(\S\+\s\+\)\(.*\)$/\1"\2"/'
о на деле, нет смысла расставлять кавычки, если там нет пробелов, так
что вот так красивее
sort echos.txt | join -i -a1 - ech00830.avl | sed -e 's/\r//;
s/^\(\S\+\s\+\)\(\S\+\s\+.*\)$/\1"\2"/'
В общем я увлёкся сабжем и решил создать файл с описанием ваще всех эх со всех линков :-\ Потом сделать этот файл доступным фидошной общественности, вдруг кому-то пригодится :)
Чтоб начать мне надо понимать к каким именно эхам у меня нет описания.
Вот например мой файл с описаниями:
В общем я увлёкся сабжем и решил создать файл с описанием ваще всех эх со всех
линков :-\ Потом сделать этот файл доступным фидошной общественности, вдруг
кому-то пригодится :)
Чтоб начать мне надо понимать к каким именно эхам у меня нет описания.
Вот например мой файл с описаниями:
=== Cut ===
MO.CARS "Эха Московских автомобилистов"
MO.CARS.AUDIO "Все об авто-аудиоаппаратуре"
MO.CARS.AUDI_VW "Общение владельцев AUDI и VolskWagen"
MO.CARS.NIVA "Вcе об автомобилях Hива"
MO.CARS.OKA "Все об автомобиле ОКА"
RU.CARS.LADA "Автомобили ВАЗ" === Cut ===
Вот файл от линка:
=== Cut ===
ru.cars
ru.cars.daewoo
ru.cars.lada
=== Cut ===
Как получить в вывод эху ru.cars.daewoo ?
Чтоб начать мне надо понимать к каким именно эхам у меня нет описания.Допустим, файл "с описаниями" называется desc.txt.
Вот например мой файл с описаниями:
=== Cut ===
MO.CARS "Эха Московских автомобилистов"
MO.CARS.AUDIO "Все об авто-аудиоаппаратуре"
MO.CARS.AUDI_VW "Общение владельцев AUDI и VolskWagen"
MO.CARS.NIVA "Вcе об автомобилях Hива"
MO.CARS.OKA "Все об автомобиле ОКА"
RU.CARS.LADA "Автомобили ВАЗ" === Cut ===
Вот файл от линка:
=== Cut ===
ru.cars
ru.cars.daewoo
ru.cars.lada
=== Cut ===
Как получить в вывод эху ru.cars.daewoo ?
Hужный итог даёт однострочник:
awk -ve="ru.cars.daewoo" -F' *"' 'tolower($1)==e {print $2; exit}' desc.txt
Окей Босс! :)В общем я увлёкся сабжем и решил создать файл с описанием ващеДруг, я вижу как у тебя увеличивается хотелка: от простова
всех эх со всех линков :-\ Потом сделать этот файл доступным
фидошной общественности, вдруг кому-то пригодится :)
сопоставления названия эхи в одном файле аплинка, с "описанием ваще
всех эх со всех линков". Давай мы перенесём это упраждение в
теоритичекую плоскость сначала, я готов тебе показать, с чем ты сталкнёшься на своём пути, решая такую задачу.
Одно дело распарсить areas.bbs файл пришедший по файлэхе, и другоеHу таких же не много? Можно и ручками подправить..
дело, когда аплинк не даёт в таком формате, и, скорее всего, ты
захочешь попарсить вывод от areafix %list. Довольно быстро ты поймёшь,
что разные areafix'ы отвечают в разном формате. Довольно быстро ты поймёшь, что многие описания эх тебе не подходят, например, "эха как
эха", и тебе захочется такие выкинуть из списка.
Пока ты будешь решать данную задачку, то тебе потребуются разные дата-стракчерсы, как минимум разные листы (списочки), хеши (например,Ууу... до этого еще надо дойти... а там уже решать по мере поступления :)
для сопоставления эхи и её описания), а также разные алгоритмы для
работы с этими структурками, например, сопоставить все записи из
списка А, со списком Б по первому полю, или если описание не в списке плохих описаний.
Так то шелл - это классный инструмент, тут можно одной коммандойТо есть моя задача уже выходит за пределы шелла? :)
делать sort, можно заменять что-то на что-то sed, можно сопоставлять
типа inner join коммандой join, и всё это можно пускать через пайп, ну прямо функциональное программирование.
Я раньше вообще импортировал в эксель, там всё это как-то сортировал, потом выгружал обратно, но это всё было настолько мутрно, что второй раз я уже так делать не стал :)В общем я увлёкся сабжем и решил создать файл с описанием ващеЕще немного и ты придумаешь грузить их в базу данных =)
всех эх со всех линков :-\ Потом сделать этот файл доступным
фидошной общественности, вдруг кому-то пригодится :)
Чтоб начать мне надо понимать к каким именно эхам у меня нет
описания. Вот например мой файл с описаниями:
Пардон, неправильно прочитал задачу. Другой однострочник поможет.Да, получилось! Это здорово упростит мою задачу! Спасибо!!
Пусть опять же файл "с описаниями" называется desc.txt,
а "файл от линка" называется link.txt. Тогда:
$ awk '{print tolower($1)}' desc.txt | fgrep -xvf- link.txt
ru.cars
ru.cars.daewoo
Я уже понял что ты имел ввиду! Всё у всех по разному, чтоб начало что-то получаться, приходится сначала приводить все к одному виду:Друг, я вижу как у тебя увеличивается хотелка: от простоваОкей Босс! :)
сопоставления названия эхи в одном файле аплинка, с "описанием
ваще всех эх со всех линков". Давай мы перенесём это упраждение в
теоритичекую плоскость сначала, я готов тебе показать, с чем ты
сталкнёшься на своём пути, решая такую задачу.
Если следовать таким курсом, шеллом удастся удалить дюпы (строки) при совпадении эхотага?
Я уже понял что ты имел ввиду! Всё у всех по разному, чтоб начало
что-то получаться, приходится сначала приводить все к одному виду: ECHO.TAG Описание конференции
Чтоб не запутаться я разбил всё на разные скрипты, у меня их сейчас 6
штук и я получил первый список недостающих описаний :-)
Hачал пока с небольших линков, эхи которые понятны по смылу эхотага я опишу сам, а что не понтяно отправил вопрос сисофону, пусть сам
описывает. Скоро дойду до 5020/1042, вот настанет то веселье :)))
Да. И похоже есть часть описаний у другого линка, и еще часть можно дернуть с описаний эхобона. Вот думаю как лучше всё это скомпоновать в один файл...:
1. Привести к единому формату
2. Слить всё в один файл
3. Отсортировать
4. Удалить дюпы
Если следовать таким курсом, шеллом удастся удалить дюпы (строки) при совпадении эхотага?
Похоже это работает только если строки полностью идентичны, а мой файл выглядит сейчас вот так:Если следовать таким курсом, шеллом удастся удалить дюпы (строки)sort -u
при совпадении эхотага?
Hо программистами за пару дней не становятся, а вот подучить команды в шеле в принципе по зубам.Я уже понял что ты имел ввиду! Всё у всех по разному, чтоб началоВидишь, если ты делаешь на скриптах, то у тебя образуется много
что-то получаться, приходится сначала приводить все к одному
виду: ECHO.TAG Описание конференции
врЕменных файлов, где ты хранишь промежуточные результаты вычислений.
Если ты это делаешь на ЯП, то это разные списочки в памяти, или хеши
даже.
Слушаю-слушаю! Я уже понял что для этой задачи шел не подходит, но может помочь частично облегчить задачу. Все равно прежде чем изучать ЯП надо же повариться во всём этом, потыркаться-помыкаться, понять, почувствовать потребности.Чтоб не запутаться я разбил всё на разные скрипты, у меня ихВот ты не слушаешь старших. Если тебе просто из А сделать Б, то шел
сейчас 6 штук и я получил первый список недостающих описаний :-)
скрипт в самый раз, а твой квест подразумевает много разных логический ветвлений. Сейчас у тебя 6 скриптов, потом двацать шесть, потом ты начинаешь в шелле использовать функции, или уже? Кстати, когда тебе функций в шелле перестанет хватать, то можно начать в скрипте
использовать классы и объекты, и такой скрипт называется питон.
Да какое там качество, так черновики... Hо я и этому рад :)Hачал пока с небольших линков, эхи которые понятны по смылуКачество твоих скриптов нужно проверить на повторяемость. Есть файлы
эхотага я опишу сам, а что не понтяно отправил вопрос сисофону,
пусть сам описывает. Скоро дойду до 5020/1042, вот настанет то
веселье :)))
на входе, есть файл с комбинированным списком на выходе - и ни каких ручных манипуляций в середине.
Да, с кривыми описаниями.Да. И похоже есть часть описаний у другого линка, и еще частьТы читал моё предыдущее письмо, с чем ты сталкнёшься, когда будешь реализовывать?
можно дернуть с описаний эхобона. Вот думаю как лучше всё это
скомпоновать в один файл...:
Hу это очень круто. Это уже прям МФУ :)1. Привести к единому форматуФункция загрузки разных входных файлов, будь то areas.bbs, или вывод areafix %list, к "словарю": ключ=эха, значение=описание. У меня там
более сложный объект, я ещё храню флашки - подписан, не подписан у
этого линка, также можно сресканить базу или нет.
Если следовать таким курсом, шеллом удастся удалить дюпы
(строки) при совпадении эхотага?
sort -uПохоже это работает только если строки полностью идентичны, а мой файл выглядит сейчас вот так:
=== Cut ===
ADEPT_SYSOP AdeptXBBS Sysop-Only Help and Discussion Group
ADINF.SUPPORT Антивиpусная поддеpжка
ADINF.SUPPORT Об антивирусах ADinf/Dr.Web/Aidstest
ADS_ANNOUNCE ADS File Announcements
=== Cut ===
Hо программистами за пару дней не становятся, а вот подучить команды в шеле в принципе по зубам.
Может у тебя уже готовый список с описанием эх есть? :)
ексель заменить на базу данных (да хоть дбф), а потом уже оттуда селектом по любым признакам какие только нравятся и ихВ общем я увлёкся сабжем и решил создать файл с описанием ваще
всех эх со всех линков :-\ Потом сделать этот файл доступным
фидошной общественности, вдруг кому-то пригодится :)
Чтоб начать мне надо понимать к каким именно эхам у меня нет
описания. Вот например мой файл с описаниями:
Еще немного и ты придумаешь грузить их в базу данных =)Я раньше вообще импортировал в эксель, там всё это как-то сортировал, потом
выгружал обратно, но это всё было настолько мутрно, что второй раз я уже так
делать не стал :)
Приступаю к гуглению и поискам по этой теме...Hо программистами за пару дней не становятся, а вот подучитьВсе программисты с чего-то начинали.
команды в шеле в принципе по зубам.
Спасибо!!Может у тебя уже готовый список с описанием эх есть? :)https://www.dropbox.com/s/pqxi99niy8gkjj0/echo5015-46.list.zip?dl=0
Да, идея хороша! Потом еще можно будет сделать интерфейс и запустить сервер описаний для загрузки последних обновлений описаний :)Я раньше вообще импортировал в эксель, там всё это как-тоексель заменить на базу данных (да хоть дбф), а потом уже оттуда
сортировал, потом выгружал обратно, но это всё было настолько
мутрно, что второй раз я уже так делать не стал :)
селектом по любым признакам какие только нравятся и их комбинациям.
1. Привести к единому формату
2. Слить всё в один файл
3. Отсортировать
4. Удалить дюпы
Если следовать таким курсом, шеллом удастся удалить дюпы (строки) при совпадении эхотага?
шелл-скрипт будет разрастаться и становится сильно кудрявым и малоуправляемым
Видишь, если ты делаешь на скриптах, то у тебя образуется много врЕменных файлов, где ты хранишь промежуточные результаты вычислений.
sort -uk1Спасибо! Задача частично облегчилась, но все же она обрабатывает строку целиком. Вот файл до обработки sort -uk1:
Комада sort умеет сортировать данные, используя в качестве ключа
не всю строку, заданный набор столбцов. Кроме того, она умеет
удалять из выдачи строки с повторяющимся значением ключа.
sort -uk1Спасибо! Задача частично облегчилась, но все же она обрабатывает строку целиком.
Комада sort умеет сортировать данные, используя в качестве ключа
не всю строку, заданный набор столбцов. Кроме того, она умеет
удалять из выдачи строки с повторяющимся значением ключа.
Спасибо! Попробую :)sort -uk1
Комада sort умеет сортировать данные, используя в качестве ключа
не всю строку, заданный набор столбцов. Кроме того, она умеет
удалять из выдачи строки с повторяющимся значением ключа.
Спасибо! Задача частично облегчилась, но все же она обрабатываетПардон, более правильно так: sort -uk 1,1 filename
строку целиком.
Sysop: | Angel Ripoll |
---|---|
Location: | Madrid, Spain |
Users: | 16 |
Nodes: | 4 (0 / 4) |
Uptime: | 101:19:53 |
Calls: | 563 |
Files: | 81,363 |
Messages: | 1,200,768 |