Отредактируйте EBS XML context_file, чтобы добавить строку после определенного

-3

У меня есть требование, где мне нужно добавить новую запись для создания настраиваемой вершины в файле context_file приложения ebs, установленного в Oracle Linux 6. Файл context_file представляет собой файл XML. Нам нужно найти строку, а затем нам нужно добавить новую запись сразу после искомой строки.

  1. Поиск строки AU_TOP>в файле.
  2. Вставить строку в новую строку сразу после AU_TOP>

    <TEST_TOP oa_var="s_testtop" oa_type="PROD_TOP" oa_enabled="FALSE">/u01/oracle/oracle/apps/apps_st/appl/test/12.0.0</TEST_TOP>

  3. Сохраните файл.

Как это можно сделать с помощью сценария оболочки?

user3436389
источник
1
С большим трудом, если вы не включите пример ввода и вывода. И даже тогда синтаксический анализ XML с использованием сценариев оболочки похож на выполнение операции на мозге с помощью пластиковой чайной ложки.
Джейсонвриан
sed '/AU_TOP>/a /u01/oracle/oracle/apps/apps_st/appl/test/12.0.0'?
Heemayl
Спасибо за ваш комментарий Джейсон. Я запустил команду, вставил строку, но как сохранить файл с изменениями?
user3436389
Например, мой xml-файл содержит следующую запись: <AU_TOP oa_var = "s_autop" oa_type = "PROD_TOP" oa_enabled = "FALSE"> / u01 / oracle / VIS / apps / apps_st / appl / au / 12.0.0 </ AU_TOP> < FND_TOP oa_var = "s_fndtop" oa_type = "PROD_TOP" oa_enabled = "TRUE"> / u01 / oracle / VIS / apps / apps_st / appl / fnd / 12.0.0 </ FND_TOP>
user3436389
Когда я дал следующую команду sed '/ AU_TOP> / a /u01/oracle/oracle/apps/apps_st/appl/test/12.0.0' text.txt, он вставил новую строку в вывод, но как сохранить новую вставленную строку в файле?
user3436389

Ответы:

0

Кража идеи Heemayl из комментариев , затем добавление -iдля редактирования на месте и новых строк для команды 'append' и требуемого перехода на новую строку после этого:

sed -i '/AU_TOP>/a\
<TEST_TOP oa_var="s_testtop" oa_type="PROD_TOP" oa_enabled="FALSE">/u01/oracle/oracle/apps/apps_st/appl/test/12.0.0</TEST_TOP>

' context_file.xml
Джефф Шаллер
источник
Привет, Джефф, я попробовал то, что ты сказал, и это сработало, но я столкнулся с другой проблемой, команда sed не принимает никаких переменных $, например:! / Bin / bash export CONTEXT_FILE = test_dba.xml export APPL_TOP = / root echo -n " Имя: "прочитанное имя top = $ (echo" <$ {name ^^} _ TOP oa_var = \ "s_ echo $nametop \" oa_type = \ "PROD_TOP \" oa_enabled = \ "FALSE \"> echo $APPL_TOP/$name/12.0.0 < / $ {name ^^} _ TOP> ") echo $ top sed -i '/ AU_TOP> / a" $ {top} "' $ CONTEXT_FILE, однако при передаче значения для переменной типа ERP в качестве значения добавляется только $ top в файле XML и не передает значение, хранящееся в $ top.
user3436389
Рад слышать, что это работает! Чтобы получить значения переменных в sed, вы должны использовать двойные кавычки; одинарные кавычки не позволяют оболочке вставлять значения переменных.
Джефф Шаллер