以下是我的听众条目
SID_LIST_DG_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = abc)
(ORACLE_HOME = abc)
(SID_NAME = abc)
(SERVICE_NAME = abc)
)
)
我想要一个可以添加新SID DESC块的shell命令。例如
SID_LIST_DG_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = abc)
(ORACLE_HOME = abc)
(SID_NAME = abc)
(SERVICE_NAME = abc)
(SID_DESC =
(GLOBAL_DBNAME = xyz)
(ORACLE_HOME = xyz)
(SID_NAME = xyz)
(SERVICE_NAME = xyz)
)
)
答案 0 :(得分:0)
如果您可以假设最后两个右括号在行中是唯一的,则以下内容应该有效:
awk '!/^)$/ {print}' <desc_file >new_desc_file
cat new_desc >> new_desc_file
printf ")\n)" >> new_desc_file
mv new_desc_file desc_file
答案 1 :(得分:0)
可以使用sed完成,但命令有些神秘(就像sed一样):
SID=xyz
sed '3{N;N;N;N;h;};${s/)$//;p;g;s/abc/'$SID'/g;s/))$/)/;s/)$/))/;}' oldfile > newfile
此命令适用于两种情况(同一行或不同行上的两个最后括号)。您可以根据您的sed和操作系统版本来编辑文件。