我有一个名为$ {sysmain_content}的文件。我试图将其放置在文件/var/tmp/sym_links.ini.$$中的[DWH_DBSPACES_LOCATION]模式之前。
所以我希望[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
答案 0 :(得分:2)
这可能对您有用(GNU sed):
sed '/^\[DWH_DBSPACES_LOCATION\]$/e cat '"${sysmain_content}"'' file
在打印输出行之前,请使用评估命令和cat
文件。
答案 1 :(得分:1)
这对我有用:
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命令插入文件内容后将其追加。