Добавить текст в начало соответствующего шаблона в bash - PullRequest
0 голосов
/ 01 июля 2019

У меня есть файл с именем $ {sysmain_content}. Я пытаюсь разместить это непосредственно перед шаблоном [DWH_DBSPACES_LOCATION] в файле /var/tmp/sym_links.ini.$$.

Так что я хочу, чтобы [DWH_DBSPACES_LOCATION] отображался в конце, а не в начале замененной строки в файле ниже.

`

;--------------------------------------------------------------------------
; DWH MAIN DBSPACE information
;--------------------------------------------------------------------------
[DWH_SYSTEM_MAIN]
DWH_SYSTEM_MAIN_1
DWH_SYSTEM_MAIN_2

[DWH_SYSTEM_MAIN_1]
Path=/eniq/database/dwh_main_dbspace/iq_system_main.iq
Lun_ID=
Type=fs
Size=30166
Link=
Disk=

[DWH_DBSPACES_LOCATION]

Моя попытка ниже с использованием sed и r делает противоположное, так как сначала печатает содержимое файла.

sed "/^\[DWH_DBSPACES_LOCATION\]$/r ${sysmain_content}" /var/tmp/sym_links.ini.$$ > /var/tmp/sym_links.ini.$$.tmp1

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

Это может сработать для вас (GNU sed):

sed '/^\[DWH_DBSPACES_LOCATION\]$/e cat '"${sysmain_content}"'' file

Используйте команду оценки и cat файл перед печатью строки вывода.

1 голос
/ 02 июля 2019

Это сработало для меня:

sed -e your_file_name.ini '
/\[DWH_DBSPACES_LOCATION\]/ {
    r new_section.ini
    a\
\n[DWH_DBSPACES_LOCATION]
    d
}
'

Файл с разделами, которые вы хотите вставить, называется new_section.ini в примере выше.Вы можете переименовать его.Затем он использует команду r, как в вашей базе для вставки этого файла, подавляет нормальный вывод [DWH_DBSPACES_LOCATION] и добавляет его после вставки содержимого файла с помощью команды a.

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