The below script is used to scan a full text file line by line for a certain pattern.
Once this pattern is found,
The script does another pattern matching to do another change in that same line.
[root@khofo05 sherif]$ awk -v FILENAME=./server.xml_20131127_1 -f ./change_ds.awk >server.xml
[root@khofo05 sherif]$ cat change_ds.awk
BEGIN{
i=0;
line="";
while (getline line < FILENAME)
{
gotit=match(line,"DB1");
if (gotit == 0)
{
print(line);
}
else if (gotit > 0 )
{
#print ("match------",line);
newsvr=gsub("db111oracle.example.com","db123oracle.example.com",line);
newsid=gsub("DB1","DB3",line);
#print (newsvr,newsid,line);
print (line);
#break;
}
}
}
[root@khofo05 sherif]$
The above is an example for a mass change in a server.xml file for changing a Datasource definition from a SID/host to another SID/host.
Would be useful if multiple datasources are involved.
Once this pattern is found,
The script does another pattern matching to do another change in that same line.
[root@khofo05 sherif]$ awk -v FILENAME=./server.xml_20131127_1 -f ./change_ds.awk >server.xml
[root@khofo05 sherif]$ cat change_ds.awk
BEGIN{
i=0;
line="";
while (getline line < FILENAME)
{
gotit=match(line,"DB1");
if (gotit == 0)
{
print(line);
}
else if (gotit > 0 )
{
#print ("match------",line);
newsvr=gsub("db111oracle.example.com","db123oracle.example.com",line);
newsid=gsub("DB1","DB3",line);
#print (newsvr,newsid,line);
print (line);
#break;
}
}
}
[root@khofo05 sherif]$
The above is an example for a mass change in a server.xml file for changing a Datasource definition from a SID/host to another SID/host.
Would be useful if multiple datasources are involved.
Anther good script based on same idea used to edit puppet yaml files (13 files for one project in that case !)
ReplyDelete[root@feanor role_appserver_tcserver]# cat put_in_wily.sh
for FILE in `ls group*.yaml`
do
awk -f awk_script.awk $FILE >${FILE}_fix
mv ${FILE}_fix $FILE
done
[root@feanor role_appserver_tcserver]#
[root@feanor role_appserver_tcserver]# cat awk_script.awk
BEGIN{
while (getline line)
{
split(line,yaml_field,"::");
linebefore=match(line,"instanceType");
#print(linebefore);
if(linebefore > 0)
{
print line;
print "tcserver::" yaml_field[2] "::wilyJavaOpts: '-javaagent:/opt/wily/Tomcat907/Agent.jar -Dcom.wily.introscope.agent.agentName=%{::hostname}_" yaml_field[2] " -Dcom.wily.introscope.agentProfile=/opt/wily/Tomcat907/core/config/IntroscopeAgent.profile'";
}
else
{
print line;
}
}
}
[root@feanor role_appserver_tcserver]#