LINUX.ORG.RU

Помогите сформировать команду обработки текста

 


0

1

Здравствуйте. Обрабатываю текст, в котором есть строчки вида

--------------------------------------------------------------
2016/03/30 13:00:08 В Нижнем Новгороде открыт первый в России храм Летающего Макаронного Монстра
--------------------------------------------------------------

В начале этих строчек - стандартный rss формат даты ([0-9][0-9][0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]\ [0-9][0-9]\:[0-9][0-9]\:[0-9][0-9])

Вопрос в том, чтоб обрамить эти 'даты' открывающим и закрывающим html-тегом (пусть для простоты это будет 'откр_тег' и 'закр_тег').

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

Спасибо за внимание.

★★★★★

Последнее исправление: piyavking (всего исправлений: 3)

Вопрос в том, чтоб обрамить эти выражения открывающим и закрывающим html-тегом (пусть для простоты это будет 'откр_тег' и 'закр_тег').

Так в чем вопрос? Режексп тыж вроде сам составил.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

ээээ

регексп-то я составил, а вот как команду (sed?) сформировать, я не понимаю.

заголовок поправил, спасибо за уточнение.

piyavking ★★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 1)
Ответ на: комментарий от piyavking
echo '2016/03/30 13:00:08 В Нижнем Новгороде открыт' | sed -r 's/[0-9\/]+ [0-9:]+/<a>\0<\/a>/'
Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от piyavking
$ echo abchello | sed -r 's/^(abc)(.*)$/<tag>\1<\/tag>\2/'
<tag>abc</tag>hello

s/что_меняем/на_что_меняем/

\1, \2 — ссылки на выражения в скобках

i-rinat ★★★★★
()

В sed не разбираюсь, на perl это делается так:

$_ = "--------------------------------------------------------------
2016/03/30 13:00:08 В Нижнем Новгороде открыт первый в России храм Летающего Макаронного Монстра
--------------------------------------------------------------";
s/([0-9][0-9][0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]\ [0-9][0-9]\:[0-9][0-9]\:[0-9][0-9])/\<откр\>\1\<закр\>/g;
print $_
--------------------------------------------------------------
<откр>2016/03/30 13:00:08<закр> В Нижнем Новгороде открыт первый в России храм Летающего Макаронного Монстра
--------------------------------------------------------------

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

у перла есть набор праметров `-lane` пригодный для сего случая:

%  echo 'test\n2016/03/30 13:00:08 В Нижнем Новгороде открыт' | perl -lane 's/([0-9\/]+ [0-9:]+)/<a>\1<\/a>/; print '
test
<a>2016/03/30 13:00:08</a> В Нижнем Новгороде открыт

Deleted
()

Спасибо всем, кто откликнулся

sed 's/жуткое регулярное выражение/добавляемый в начало текст&добавляемый в конец текст/' - наилучшее решение, я считаю.

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