парсинг текстовых файлов в директории
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- сержант
- Сообщения: 224
- Зарегистрирован: 2011-09-21 1:23:43
парсинг текстовых файлов в директории
всем привет. ситуация следующая. есть некая директория
/home/txt/
в этой директории находятся файлы, название которых начинается от 1.html до n.html
в каждом следующем файле название больше на единицу. больше в этой директории ничего нету.
требуется шелл-скриптом сделать следующее:
в файл 1.html в самый верх добавить n кол-во строк, и если в этом файле окажется более 10 строк, то "сдвинуть" все остальные строки по другим файла, т.е. в случае если в файле 1.html было 10 строк и приписали мы одну, последнюю строку сделать первой файла 2.html, последнюю строку файла 3.html сделать первой строкой файла 4.html и так до тех пор, пока не найдется файл, в котором меньше 10 строк, в который просто дописать туда эту строку вверху и все. как посоветуете это реализовать?
то есть необходима "обратная сортировка" в текстовых файлах динамическим перестраиванием при добавлении новой строки, т.к. она добавляется в файл 1.html в самый верх. можно конечно хранить копию этих файлов в обычной сортировке, дописывать строку в последний файл в конец, а потом полностью "пересобирать" те файлы на основе этих, но помоему это будет не особо хорошо плане производительности, предыдущий вариант думаю будет быстрее, если его правильно реализовать. может есть еще какие-то средства, побыстрее да поготовей? необходимо хранение строк именно в файлах по такой структуре, mysql не предлагать
/home/txt/
в этой директории находятся файлы, название которых начинается от 1.html до n.html
в каждом следующем файле название больше на единицу. больше в этой директории ничего нету.
требуется шелл-скриптом сделать следующее:
в файл 1.html в самый верх добавить n кол-во строк, и если в этом файле окажется более 10 строк, то "сдвинуть" все остальные строки по другим файла, т.е. в случае если в файле 1.html было 10 строк и приписали мы одну, последнюю строку сделать первой файла 2.html, последнюю строку файла 3.html сделать первой строкой файла 4.html и так до тех пор, пока не найдется файл, в котором меньше 10 строк, в который просто дописать туда эту строку вверху и все. как посоветуете это реализовать?
то есть необходима "обратная сортировка" в текстовых файлах динамическим перестраиванием при добавлении новой строки, т.к. она добавляется в файл 1.html в самый верх. можно конечно хранить копию этих файлов в обычной сортировке, дописывать строку в последний файл в конец, а потом полностью "пересобирать" те файлы на основе этих, но помоему это будет не особо хорошо плане производительности, предыдущий вариант думаю будет быстрее, если его правильно реализовать. может есть еще какие-то средства, побыстрее да поготовей? необходимо хранение строк именно в файлах по такой структуре, mysql не предлагать
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
-
- капитан
- Сообщения: 1820
- Зарегистрирован: 2010-12-25 20:41:50
- Откуда: Хлебная столица
Re: парсинг текстовых файлов в директории
time12345, извини, вклинюсь со своим вопросом.
На сколько оправдано для таких задач использовать шелл скрипты?
В планах у меня есть проект, где потребуется много парсинга, сортировки, наполнения других файлов результатом. Вот думаю, на чём это делать. В принципе, язык мне почти по-барабану, лишь бы не Си или Асм. Хочется правильно и универсально. Делал на AutoIT, там ещё и с MySQL красивая работа получается, но судьба и хотелка "правильной ОС" оставила без этого великолепия. Теперь хочется чего-то более основательного, чтобы не переписывать через год-два.
На сколько оправдано для таких задач использовать шелл скрипты?
В планах у меня есть проект, где потребуется много парсинга, сортировки, наполнения других файлов результатом. Вот думаю, на чём это делать. В принципе, язык мне почти по-барабану, лишь бы не Си или Асм. Хочется правильно и универсально. Делал на AutoIT, там ещё и с MySQL красивая работа получается, но судьба и хотелка "правильной ОС" оставила без этого великолепия. Теперь хочется чего-то более основательного, чтобы не переписывать через год-два.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: парсинг текстовых файлов в директории
2 time12345
Не ясно, нужна сортировка или стек?
Новая строка ВСЕГДА добавляется в файл 1.html?
2 Bayerische
Я недавно реализовал достаточно большой проект со множеством парсинга\сортировки\наполнения других файлов - все на шелле - нормально, все удалось.
Не ясно, нужна сортировка или стек?
Новая строка ВСЕГДА добавляется в файл 1.html?
2 Bayerische
Я недавно реализовал достаточно большой проект со множеством парсинга\сортировки\наполнения других файлов - все на шелле - нормально, все удалось.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- капитан
- Сообщения: 1820
- Зарегистрирован: 2010-12-25 20:41:50
- Откуда: Хлебная столица
Re: парсинг текстовых файлов в директории
kpp
Сорри за ламерство, а где ещё этот шелл, корме FreeBSD применяется? Если что, под Win в Сygwin запустится? Хочется какой-то переносимости.
Сорри за ламерство, а где ещё этот шелл, корме FreeBSD применяется? Если что, под Win в Сygwin запустится? Хочется какой-то переносимости.
-
- ст. лейтенант
- Сообщения: 1375
- Зарегистрирован: 2010-02-05 0:21:40
Re: парсинг текстовых файлов в директории
шелл-скрипты весьма переносимы. Проблемы могут быть с тулами, которые этот скрипт вызывает.
-
- сержант
- Сообщения: 224
- Зарегистрирован: 2011-09-21 1:23:43
Re: парсинг текстовых файлов в директории
Новая строка ВСЕГДА добавляется в файл 1.html
ну в общем то нужен стек, т.е. структура данных, в которой доступ к элементам организован по принципу LIFO и чтобы данные хранились строго в этих файлах
только вот если понадобится что-то удалить, этот элемент не обязательно будет в самом верху стека.
ну в общем то нужен стек, т.е. структура данных, в которой доступ к элементам организован по принципу LIFO и чтобы данные хранились строго в этих файлах
только вот если понадобится что-то удалить, этот элемент не обязательно будет в самом верху стека.
-
- сержант
- Сообщения: 224
- Зарегистрирован: 2011-09-21 1:23:43
Re: парсинг текстовых файлов в директории
и еще такой вопрос, как быстро заменить в определенном файле какой-то текст текстом, взятым с файла?
то есть например берем файл 1.txt и заменяем в файле 2.txt
<1>asdf</1>
текст asdf на текст, полученный из файла 1.txt
то есть например берем файл 1.txt и заменяем в файле 2.txt
<1>asdf</1>
текст asdf на текст, полученный из файла 1.txt
-
- подполковник
- Сообщения: 3927
- Зарегистрирован: 2008-09-04 11:51:25
- Откуда: Санкт-Петербург
Re: парсинг текстовых файлов в директории
Сваяйте скрипт на перле, его везде можно поиметь...
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: парсинг текстовых файлов в директории
2 time12345
Например, если из файла нужно взятьодну лексему или пройтись по нескольким лексемам первого файла и заменить ини определенные лексемы второго файла.
2 Bayerische
Как уже ответили, скрипты на шелле достаточно переносимы.
Другой вопрос, стОит ли ВСЕ делать на шелле?
Наверное нет.
На перле (как уже тоже подсказали), получаются очень переносимые скрипты, думаю, на Питоне - аналогично.
Можно и на Си - если нужно быстродействие, компактность, с переносимостью несколько хуже, нужно компилировать под каждую ОС.
Чтобы точно дать ответ, нужно конкретизировать вопрос.и еще такой вопрос, как быстро заменить в определенном файле какой-то текст текстом, взятым с файла?
Например, если из файла нужно взятьодну лексему или пройтись по нескольким лексемам первого файла и заменить ини определенные лексемы второго файла.
2 Bayerische
Как уже ответили, скрипты на шелле достаточно переносимы.
Другой вопрос, стОит ли ВСЕ делать на шелле?
Наверное нет.
На перле (как уже тоже подсказали), получаются очень переносимые скрипты, думаю, на Питоне - аналогично.
Можно и на Си - если нужно быстродействие, компактность, с переносимостью несколько хуже, нужно компилировать под каждую ОС.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- ст. лейтенант
- Сообщения: 1375
- Зарегистрирован: 2010-02-05 0:21:40
Re: парсинг текстовых файлов в директории
кстати обработка текста на сях может быть медленее. Просто потому, что свои самописные функции окажутся хуже, чем библиотечные перла.