LINUX.ORG.RU
решено ФорумAdmin

Как сделать из текста html ссылку


0

2

Добрый день уважаемые товарищи. Такая проблема есть файл 1.txt из него построчно взять текст и сделать из него ссылки. Например перед добавлением каждой строки добавить <a href=«111.htm»>111</a><br> а вместо 111 вставить текст

Буду очень благодарен за помощь...

Ответ на: комментарий от emulek

Чтобы ты опять ничего не перепутал, повторю условия:
1. взять 10 первых строк из файлов strings.txt в каталоге
2. не учитывать при этом пустые строки и комментарии (#)
3. завернуть каждую строку в <a href=«x»>x</a>

ddos3
()
Ответ на: комментарий от ddos3

Ты дал отдельные решения для двух частей задачи, но не осилил написать полное решение одним куском только sedом без конвеера. Напишешь - поговорим.

нет, это и есть полное решение всего того, что ты придумал. Я его даже проверил. Там единственное: оно 3 строки выводит, а не 10, мне так тестировать удобнее было. Ну смени цифру 3 на число 10.

У поверь, я себя Гуру не считаю, но в sed немного разбираюсь. И если говорю «тут достаточно только sed», то это правда.

А то, что код тебе непонятен, не делает его плохим. Это субъективно.

emulek
()
Ответ на: комментарий от ddos3

sed -rn '/^$/b;/^#/b;H;x;s/([^\n]*\n){3}/&/;x;T;x;s/\n//;s~.*~<a href=«&»>&</a>~p;q'

можешь в find завернуть, потому что поиск файлов действительно другая задача, и sed её ессно не умеет и не должна. Но вот «обработка текста» — это уже фишка sed, и она с лёгкостью заменяет все твои Over9000 утилиток вроде head/cat.

emulek
()
Ответ на: комментарий от emulek

нормальный код, легко читаемый.

повторяй эту мантру по-чаще

Просто ты читать не умеешь, и учится не желаешь.

Такому не желаю.

Остальные замечания — придирки не по-существу вопроса.

anonymous
()
Ответ на: комментарий от emulek

это и есть полное решение всего того, что ты придумал.

Нет, это решение только первых двух пунктов, оно не добавляет href

Я его даже проверил.

твое «решение» пропускает файлы короче 3-х строк, то есть не работает. Чтд. Зато ты разбираешься в sedе и тебе в твоем коде все понятно.
Короче, закончишь школу, начнешь работать над настоящими проектами, где времени программистов вечно не хватает, тогда, может быть, и поймешь.
А пока что пора заканчивать эту нездоровую дискуссию.

ddos3
()
Ответ на: комментарий от emulek

тут наверное лучше так сделать:

sed -rn '/^$/b;/^#/b;H;x;s/([^\n]*\n){3}/&/;x;T;x;s/\n//;s~^.*$~<a href=«&»>&</a>~mgp;q'

emulek
()
Ответ на: комментарий от ddos3

твое «решение» пропускает файлы короче 3-х строк

ну и что? Это не баг, а фича. Можно исправить.

Короче, закончишь школу, начнешь работать над настоящими проектами, где времени программистов вечно не хватает, тогда, может быть, и поймешь.

причём тут «настоящие проекты»?

emulek
()
Ответ на: комментарий от anonymous

нормальный код, легко читаемый.

повторяй эту мантру по-чаще

это не мантра, а факт.

emulek
()
Ответ на: комментарий от emulek

Это не баг, а фича.

Слив засчитан.

Можно исправить.

Все можно исправить, вопрос в том, сколько это будет стоить. Пока ты тут упражнялся с sedом, задачу уже двадцать раз решили намного более простым способом (ты хотел моего решения? смотри, чего написал анонимус чуть выше. С grepом и headом. Я бы решал так же).

причём тут «настоящие проекты»?

При том, что пока ты не начнешь работать, ты не поймешь, что лучшие решения это те, которые быстро пишутся, легко читаются и изменяются, и при этом работают.
Пока что подумай вот о чем: если теперь попросят заменить первые 10 строк на последние 10 строк, я заменю head на tail и пойду делать что-нибудь полезное (кофе пить, например :), а ты будешь с нуля переписывать и дебажить свой sed-скрипт. И не факт, что не поломаешь еще чего-нибудь.

ddos3
()
Ответ на: комментарий от ddos3

Пока что подумай вот о чем: если теперь попросят заменить первые 10 строк на последние 10 строк

не попросят. Это только твои фантазии.

При том, что пока ты не начнешь работать, ты не поймешь, что лучшие решения это те, которые быстро пишутся, легко читаются и изменяются, и при этом работают.

это всё субъективно. В том числе и твоё «работает» с походу придуманными дополнительными условиями. Так и я могу решение анонимуса оспорить тем аргументом, что «на моём сервере нет egrep».

Все можно исправить, вопрос в том, сколько это будет стоить.

лично мне это не будет стоить ни копейки. Я умею пользоваться sed и знаю её язык. А то, что это не всем известно — проблемы этих «не всех», и их квалификации. 95% и про head(1) не в курсе, и что?

emulek
()
Ответ на: комментарий от emulek

не попросят. Это только твои фантазии.

Это реальный опыт, детка.

с походу придуманными дополнительными условиями

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

лично мне это не будет стоить ни копейки.

Вот о том и речь, что пока ты играешься дома, это ничего не стоит. А когда время программистов сильно ограничено и стоит реальных денег, начинаешь думать о том, чтобы они писали код быстро и просто, а не замучивали sed для тех задач, которые проще решить другими средствами.

Я умею пользоваться sed и знаю её язык.

И именно поэтому твое решение тривиальной задачи оказалось нерабочим. Продолжать этот разговор смысла не имеет.

ddos3
()
Ответ на: комментарий от ddos3

Это реальный опыт, детка.

...которого у тебя нет.

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

я разве не учитываю? Могу и с конца сделать. Открой мой учебник, если не веришь. Мне лень повторяться специально для тебя.

Вот о том и речь, что пока ты играешься дома, это ничего не стоит. А когда время программистов сильно ограничено и стоит реальных денег, начинаешь думать о том, чтобы они писали код быстро и просто, а не замучивали sed для тех задач, которые проще решить другими средствами.

вот как раз речь именно про время. Быстрее освоить хорошо один инструмент, чем Over9000. Профессионалы не пользуются универсальными отвёртками с кучей насадок. Как думаешь, почему?

И именно поэтому твое решение тривиальной задачи оказалось нерабочим.

у тебя ТЗ неоднозначное. Откуда я знаю, что «10 строк» значит «не более 10и срок»?

emulek
()
Ответ на: комментарий от emulek

...которого у тебя нет

Ну нет, так нет. Спорить не буду.

Профессионалы не пользуются универсальными отвёртками с кучей насадок

Так это ты пытаешься все задачи решать чистым sedом, а не я. Про ребенка с молотком шутку знаешь?

Откуда я знаю, что «10 строк» значит «не более 10и срок»?

Не знаешь - спроси. Не уверен - уточни. Или сделай решение, которое будет корректно работать в edge cases.
Твои комментарии навевают скуку и уныние.

ddos3
()
Ответ на: комментарий от emulek

Быстрее освоить хорошо один инструмент, чем Over9000. Профессионалы не пользуются универсальными отвёртками с кучей насадок

Сам себе противоречишь. sed в твоем применении «универсальная отвёртка»

anonymous
()
Ответ на: комментарий от ddos3

Так это ты пытаешься все задачи решать чистым sedом, а не я.

про «все» речи не было.

Сам себе противоречишь. sed в твоем применении «универсальная отвёртка»

нет, это текстовый редактор для обработки текста. Не более и не менее. И текст удобнее обрабатывать специализированным инструментом, а не ворохом разных утилит, которые слеплены bash конвейерами в нечто нечитаемое и глючащее.

emulek
()
Ответ на: комментарий от emulek

нечто нечитаемое и глючащее.

Это как-раз про твой sed-скрипт, который не работает.

ddos3
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.