парсинг текстовых файлов в директории

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
time12345
сержант
Сообщения: 224
Зарегистрирован: 2011-09-21 1:23:43

парсинг текстовых файлов в директории

Непрочитанное сообщение time12345 » 2011-09-30 17:39:42

всем привет. ситуация следующая. есть некая директория

/home/txt/

в этой директории находятся файлы, название которых начинается от 1.html до n.html
в каждом следующем файле название больше на единицу. больше в этой директории ничего нету.

требуется шелл-скриптом сделать следующее:

в файл 1.html в самый верх добавить n кол-во строк, и если в этом файле окажется более 10 строк, то "сдвинуть" все остальные строки по другим файла, т.е. в случае если в файле 1.html было 10 строк и приписали мы одну, последнюю строку сделать первой файла 2.html, последнюю строку файла 3.html сделать первой строкой файла 4.html и так до тех пор, пока не найдется файл, в котором меньше 10 строк, в который просто дописать туда эту строку вверху и все. как посоветуете это реализовать?

то есть необходима "обратная сортировка" в текстовых файлах динамическим перестраиванием при добавлении новой строки, т.к. она добавляется в файл 1.html в самый верх. можно конечно хранить копию этих файлов в обычной сортировке, дописывать строку в последний файл в конец, а потом полностью "пересобирать" те файлы на основе этих, но помоему это будет не особо хорошо плане производительности, предыдущий вариант думаю будет быстрее, если его правильно реализовать. может есть еще какие-то средства, побыстрее да поготовей? необходимо хранение строк именно в файлах по такой структуре, mysql не предлагать :smile:

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: парсинг текстовых файлов в директории

Непрочитанное сообщение Bayerische » 2011-09-30 18:18:22

time12345, извини, вклинюсь со своим вопросом.

На сколько оправдано для таких задач использовать шелл скрипты?
В планах у меня есть проект, где потребуется много парсинга, сортировки, наполнения других файлов результатом. Вот думаю, на чём это делать. В принципе, язык мне почти по-барабану, лишь бы не Си или Асм. Хочется правильно и универсально. Делал на AutoIT, там ещё и с MySQL красивая работа получается, но судьба и хотелка "правильной ОС" оставила без этого великолепия. Теперь хочется чего-то более основательного, чтобы не переписывать через год-два.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: парсинг текстовых файлов в директории

Непрочитанное сообщение kpp » 2011-09-30 22:54:09

2 time12345
Не ясно, нужна сортировка или стек?
Новая строка ВСЕГДА добавляется в файл 1.html?

2 Bayerische
Я недавно реализовал достаточно большой проект со множеством парсинга\сортировки\наполнения других файлов - все на шелле - нормально, все удалось.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: парсинг текстовых файлов в директории

Непрочитанное сообщение Bayerische » 2011-09-30 22:59:40

kpp
Сорри за ламерство, а где ещё этот шелл, корме FreeBSD применяется? Если что, под Win в Сygwin запустится? Хочется какой-то переносимости.

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Re: парсинг текстовых файлов в директории

Непрочитанное сообщение FiL » 2011-10-01 3:35:00

шелл-скрипты весьма переносимы. Проблемы могут быть с тулами, которые этот скрипт вызывает.

time12345
сержант
Сообщения: 224
Зарегистрирован: 2011-09-21 1:23:43

Re: парсинг текстовых файлов в директории

Непрочитанное сообщение time12345 » 2011-10-01 11:55:03

Новая строка ВСЕГДА добавляется в файл 1.html
ну в общем то нужен стек, т.е. структура данных, в которой доступ к элементам организован по принципу LIFO и чтобы данные хранились строго в этих файлах
только вот если понадобится что-то удалить, этот элемент не обязательно будет в самом верху стека.

time12345
сержант
Сообщения: 224
Зарегистрирован: 2011-09-21 1:23:43

Re: парсинг текстовых файлов в директории

Непрочитанное сообщение time12345 » 2011-10-01 13:03:19

и еще такой вопрос, как быстро заменить в определенном файле какой-то текст текстом, взятым с файла?

то есть например берем файл 1.txt и заменяем в файле 2.txt

<1>asdf</1>

текст asdf на текст, полученный из файла 1.txt

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: парсинг текстовых файлов в директории

Непрочитанное сообщение snorlov » 2011-10-01 15:11:20

Сваяйте скрипт на перле, его везде можно поиметь...

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: парсинг текстовых файлов в директории

Непрочитанное сообщение kpp » 2011-10-01 16:51:56

2 time12345
и еще такой вопрос, как быстро заменить в определенном файле какой-то текст текстом, взятым с файла?
Чтобы точно дать ответ, нужно конкретизировать вопрос.
Например, если из файла нужно взятьодну лексему или пройтись по нескольким лексемам первого файла и заменить ини определенные лексемы второго файла.

2 Bayerische
Как уже ответили, скрипты на шелле достаточно переносимы.
Другой вопрос, стОит ли ВСЕ делать на шелле?
Наверное нет.
На перле (как уже тоже подсказали), получаются очень переносимые скрипты, думаю, на Питоне - аналогично.
Можно и на Си - если нужно быстродействие, компактность, с переносимостью несколько хуже, нужно компилировать под каждую ОС.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Re: парсинг текстовых файлов в директории

Непрочитанное сообщение FiL » 2011-10-01 17:57:09

кстати обработка текста на сях может быть медленее. Просто потому, что свои самописные функции окажутся хуже, чем библиотечные перла.