• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 330
  • Last Modified:

SED Question

I need to SED a file and replace:

   Transport Hostname="cscx1001"

with:

   Transport Hostname="9.9.9.9"

Here is the whole command:

cat plugin-cfg.xml | sed "s/Transport Hostname="cscx1234"/Transport Hostname="10.9.9.9"/g" > plugin.xml

I'm having issues due to the "'s around "cscx1234" and "10.9.9.9"

I tried escaping the " with slash, but that didn't work.

After I get the syntax to make this work from the command line I have to take it one step further....

I will be placing "cscx1234" and "10.9.9.9" in variables - HOSTNAME and IP.  If the double quotes were not an issue it would look something like this:

cat ${CONFIG}/plugin-cfg.xml | sed "s/Transport Hostname="${HOSTNAME}"/Transport Hostname="${IP}"/g" > ${CONFIG}/plugin.xml

Any ideas on the correct syntax for these strings?

Thanks,

Lisa


0
lphillips120898
Asked:
lphillips120898
  • 3
  • 2
1 Solution
 
ozoCommented:
cat plugin-cfg.xml | sed 's/Transport Hostname="cscx1234"/Transport Hostname="10.9.9.9"/g' > plugin.xml
0
 
ozoCommented:
cat ${CONFIG}/plugin-cfg.xml | sed 's/Transport Hostname="'${HOSTNAME}'"/Transport Hostname="'${IP}'"/g' > ${CONFIG}/plugin.xml
0
 
lphillips120898Author Commented:
070,

The first statement worked like a charm at the command line, so I assumed the second statement would work as well within the script - but it didn't.

Will you take a look at the script and see if you find anything wrong?  I echoed the HOSTNAME and IP, so I know they are gettting set.  Let me know what you think.

Thanks,

Lisa

*** SCRIPT ***
[wsadmin @ cscx1001:/opt/WebSphere/AppServer/bin/scripts]:> more genPlugin.sh
DT=$(date +%d-%m-%y)
BACKUP=/local/WebSphere/apps/Backup
HOSTNAME=`uname -n`
BIN=/opt/WebSphere/AppServer/bin
CONFIG=/opt/WebSphere/AppServer/config
BOOTSTRAP=$(grep bootstrapPort ${BIN}/admin.config | awk -F'=' '{print $2}')
IP=`ping -c 1 $HOSTNAME | sed "s/)/(/g" | awk '{FS="("}{print $2}'`

echo $HOSTNAME
echo $IP

${BIN}/GenPluginCfg.sh -adminNodeName $HOSTNAME -nameServiceHost $HOSTNAME -nameServicePort $BOOTSTRAP

cat ${CONFIG}/plugin-cfg.xml | sed 's/Transport Hostname="${HOSTNAME}"/Transport Hostname="${IP}"/g'
 > ${CONFIG}/plugin.xml


** OUTPUT ** The "plugin.xml" doesn't have any changes - it is the same as plugin-cfg.xml  ***

/scripts]:> genPlugin.sh
cscx1001  (echo of HOSTNAME)
10.12.90.10  (echo of IP)

/WebSphere/AppServer/config]:> ls -lat plugin*
-rw-r--r--   1 wsadmin  wsadmin        3943 Jun 27 16:00 plugin.xml
-rwxr-----   1 wsadmin  wsadmin        3943 Jun 27 16:00 plugin-cfg.xml


0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
ozoCommented:
You left out the ' between the end of
's/Transport Hostname="
and
${HOSTNAME}
also the 's around
"/Transport Hostname="
and before
"/g'
0
 
ahoffmannCommented:
# ozo's working suggestion improved:
(cat ${CONFIG}/plugin-cfg.xml)|sed 's/Transport Hostname="'${HOSTNAME}'"/Transport Hostname="'${IP}'"/g' > ${CONFIG}/plugin.xml
0
 
lphillips120898Author Commented:
Worked like a charm!  Thanks.
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now