LINUX.ORG.RU

Как сделать скрипт для поиска и замены строки на содержимое файла!

 , , ,


0

2

Привет! Ситуация такая: нужно сделать скрипт, который ищет в файле определённую строку, например,

« </layoutList> »

 </variantList>
  </layoutList>

И вставляет содержимое файла, до данной строки

«бла-бла-бла бла-бла-бла»

В итоге получится

 </variantList>
бла-бла-бла
бла-бла-бла
  </layoutList>

Ещё надо сделать, чтобы вставка происходила после строки... Либо хотя бы осуществить замену строки, чтобы в файле с бла-бла-бла была прописана строка с «</layoutList>» Вроде sed это может сделать, но не знаю как)



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

Может проще взять парсер xml'лек? Можно сделать на python, можно взять xmlstarlet. Или там у тебя другая структура? sed'ом самое простое s'<\/variantList>/<\/variantList>\nfooo\nbar\nsomething/ (не тестировал, но принцип, наверно, понятен).

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

\nfooo\nbar\nsomething

Ох, аккуратней тут. Со спец. символами: их нужно предварительно экранировать.

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

Может проще взять парсер xml'лек?

Надо не только xml пропатчить, а ещё некоторые не-xml файлы.
И файлы подставить... Как-то описывается это, но что-то не получалось)

Dreamject
() автор топика

xslt хочешь ты

для баша есть xsltproc

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
awk '/<\/laoutList>/ {print "бла-бла-бла-1"; print "бла-бла-бла-2"}; {print}' input.file > output.file
anonymous
()
Ответ на: комментарий от Dreamject

Вот тебе скрипт для sed:

#!sed -f
/<\/layoutList>/ {
    h
    e cat other.file
    p
    g
}
Запускать ./script.sed или sed -f script.sed

Не знаю, как в одну строчку сделать, из-за e <command>. Как без неё обойтись, тоже не знаю, кроме как сильным извращением с командой r.

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

Тебе как новичку прощаю хамство, но запомни здесь (на ЛОРе) не любят халявщиков. Направление дали, действуй, пиши скрипты, развивайся. Иначе через пару-тройки попрашайка-тредов тебе запомнят и будут посылать прямиком к RTFM

anonymous
()

Второй за неделю долб^W специалист, парсящий регулярками.

Уже ничего не исправить, жги.

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

ты ещё его остальные треды не читал

Ну зачем ты это сказал. Я ведь посмотрел...

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