Страница 1 из 1

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

Добавлено: 2011-09-30 17:39:42
time12345
всем привет. ситуация следующая. есть некая директория

/home/txt/

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

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

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

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

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

Добавлено: 2011-09-30 18:18:22
Bayerische
time12345, извини, вклинюсь со своим вопросом.

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

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

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

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

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

Добавлено: 2011-09-30 22:59:40
Bayerische
kpp
Сорри за ламерство, а где ещё этот шелл, корме FreeBSD применяется? Если что, под Win в Сygwin запустится? Хочется какой-то переносимости.

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

Добавлено: 2011-10-01 3:35:00
FiL
шелл-скрипты весьма переносимы. Проблемы могут быть с тулами, которые этот скрипт вызывает.

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

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

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

Добавлено: 2011-10-01 13:03:19
time12345
и еще такой вопрос, как быстро заменить в определенном файле какой-то текст текстом, взятым с файла?

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

<1>asdf</1>

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

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

Добавлено: 2011-10-01 15:11:20
snorlov
Сваяйте скрипт на перле, его везде можно поиметь...

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

Добавлено: 2011-10-01 16:51:56
kpp
2 time12345
и еще такой вопрос, как быстро заменить в определенном файле какой-то текст текстом, взятым с файла?
Чтобы точно дать ответ, нужно конкретизировать вопрос.
Например, если из файла нужно взятьодну лексему или пройтись по нескольким лексемам первого файла и заменить ини определенные лексемы второго файла.

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

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

Добавлено: 2011-10-01 17:57:09
FiL
кстати обработка текста на сях может быть медленее. Просто потому, что свои самописные функции окажутся хуже, чем библиотечные перла.