SED complex string replacement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting SED complex string replacement
# 1  
Old 07-13-2009
SED complex string replacement

Code:
sed -i 's:"ps -ef | grep $(cat $PID_FILE) | grep -v grep":"ps -C java -o pid,cmd | grep ${SERVER_NAME} | cut -d' ' -f1 | grep -v grep":g' scriptName

That's what I'm attempting to do. I'm attempting to replace this:

Code:
ps -ef | grep $(cat $PID_FILE) | grep -v grep

with this:
Code:
ps -C java -o pid,cmd | grep ${SERVER_NAME} | cut -d' ' -f1 | grep -v grep

Thanks for the help
# 2  
Old 07-13-2009
This is the escape anything vaguely risky and change the outer speech marks to different ones to those in the intended string method:
Code:
sed -i "s/ps \-ef \| grep \$\(cat \$PID_FILE\) \| grep \-v grep/ps \-C java \-o pid\,cmd \| grep \$\{SERVER_NAME\} \| cut \-d\' \' \-f1 \| grep \-v grep/" scriptName

brutal but is works as long as you drop the g for global replace, because surely the script does not have:
[code]
ps -ef | grep $(cat $PID_FILE) | grep -v grep
[/code
twice in one line?
If not the /g at the end of the sed statement is not needed .

Last edited by TonyFullerMalv; 07-13-2009 at 06:39 PM..
# 3  
Old 07-14-2009
Quote:
Originally Posted by TonyFullerMalv
This is the escape anything vaguely risky and change the outer speech marks to different ones to those in the intended string method:
Code:
sed -i "s/ps \-ef \| grep \$\(cat \$PID_FILE\) \| grep \-v grep/ps \-C java \-o pid\,cmd \| grep \$\{SERVER_NAME\} \| cut \-d\' \' \-f1 \| grep \-v grep/" scriptName

brutal but is works as long as you drop the g for global replace, because surely the script does not have:
[code]
ps -ef | grep $(cat $PID_FILE) | grep -v grep
[/code
twice in one line?
If not the /g at the end of the sed statement is not needed .
Code:
ps -C java -o pid,cmd | grep ${SERVER_NAME} | cut -d' ' -f1 | grep -v grep| grep $(cat $PID_FILE) | grep -v grep


That was my result. It semi-worked. The line should end at the first 'grep -v grep'


cut -d' ' -f1 | grep -v grep---------This is where the replacement command ends, and the remainder of this shouldn't be in here-----------------| grep $(cat $PID_FILE)

Here is the actual code it's in:

before replacement:

Code:
if test -f $PID_FILE ; then
  if (ps -ef | grep $(cat $PID_FILE) | grep -v grep) ; then
      echo "\nProcess already running, exiting start script."
      exit 1
  fi
fi


After running the sed command:

Code:
if test -f $PID_FILE ; then
  if (ps -C java -o pid,cmd | grep ${SERVER_NAME} | cut -d' ' -f1 | grep -v grep| grep $(cat $PID_FILE) | grep -v grep) ; then
      echo "\nProcess already running, exiting start script."
      exit 1
  fi

# 4  
Old 07-23-2009
Still haven't got this if anyone has any ideas.
# 5  
Old 07-23-2009
why do you want to do this? can't you just use the use this code? if that command varies you'll likely encounter more problems
Code:
ps -C java -o pid,cmd | grep ${SERVER_NAME} | cut -d' ' -f1 | grep -v grep| grep $(cat $PID_FILE) | grep -v grep

try

Code:
sed "s/ps -ef | grep \$(cat \$PID_FILE) | grep -v grep/ps -C java -o pid,cmd | grep \$\{SERVER_NAME\} | cut -d' ' -f1 | grep -v grep/" file


Last edited by ryandegreat25; 07-23-2009 at 10:18 PM..
# 6  
Old 07-23-2009
Code:
perl -ne 's/ps -ef \| grep \$\(cat \$PID_FILE\) \| grep -v grep/ps -C java -o pid,cmd \| grep \${SERVER_NAME} \| cut -d -f1 \| grep -v grep/;' -ne "s/-d/-d' '/; print" <file_name>

tyler_durden
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sed, Inline replacement of string with spaces

Hello, Just surfed on the web for probable answers but could not get them working. I wish to replace the string containing spaces by another phrase but below answers did not work. My string is: PAIN & GAIN I wish to convert it to: P&G I just need it working with sed with function -i ... (6 Replies)
Discussion started by: baris35
6 Replies

2. Shell Programming and Scripting

Sed: how to use file contents in replacement string

I want to replace a string by contents of file. I am trying the following sed command: cat sample | sed "s^<enter description here>^`cat details`^" But it is not working. a=`cat details` and using $a will not help since it will affect the whitespaces. What am I missing in the above sed... (5 Replies)
Discussion started by: anand_bh
5 Replies

3. Shell Programming and Scripting

Recursive replacement of search string using sed

Dear Unix Forum Group Members, Please do let me know how I can replace the double pipe with single pipe recursively on single record. Sample Input Data: DN set|Call prefix||| Called number address nature 0||| *789|||||||ALL number types 0||| 00||||||||ALL number types 10||... (5 Replies)
Discussion started by: srinu.kadem
5 Replies

4. Shell Programming and Scripting

Complex string operation (awk, sed, other?)

I have a file that contains RewriteRules for 200 countries (2 examples for 1 country below): RewriteRule ^/at(/|/index.html|)$ http://%{HTTP_HOST}/locate/index.html?locale=de_AT #& RewriteRule ^/at_english(/|/index.html|)$ http://%{HTTP_HOST}/locate/index.html?locale=en_AT I have... (5 Replies)
Discussion started by: usshadowop
5 Replies

5. Shell Programming and Scripting

Use regex in replacement string in SED

Hi, I need to use the regex in the replacement string in SED command. something like sed -e ' s/\(^\{5\}\).\{150\}\(.*\)$/\10\{30\}1\{30\}A\{60\}B\{30\}\2/' abc which means for all the lines in file abc that starts with 5 characters, I need to replace character 6-151... (6 Replies)
Discussion started by: snowline84
6 Replies

6. UNIX for Dummies Questions & Answers

sed string replacement question

Hey everybody. I've got a simple problem but am unsure how to resolve it. I am using a script to edit multiple files at once. Inside the script I am using an sed command to make the changes. My problem is that I can only get it to work for stings that contain a word or words. How can I modify it to... (1 Reply)
Discussion started by: iwatk003
1 Replies

7. Shell Programming and Scripting

Exact String replacement with sed

Hi, What should be the syntax to match and replace an exact string using sed? And not replacing any string that contain the value? Eg. testtest etstetst testetst testtttt etsttest testtesttest testtest I only want to replace the line with exact string "testtest" with "123456" ... (2 Replies)
Discussion started by: srage
2 Replies

8. Shell Programming and Scripting

String replacement using sed

I need to search and replace a particular string in a file. Only the exact match of the string should be replaced. eg: File contents : abc abcd abcdef --> Replace only 'abc' with 'xyz', but it should not replace abcd with xyzd. So the o/p should be: xyz abcd abcdef. How can this be done? I... (5 Replies)
Discussion started by: sngk
5 Replies

9. Shell Programming and Scripting

Complex sed replacement

Hi, I have a file that I would like to translate using sed. I can do some basic sed commands, but Im afraid this level is beyond me. I have this file - ...alter... .. ...65536... ... ...65536... ... ...alter... ... ...65536... etc What I would like to do is replace the first... (11 Replies)
Discussion started by: one_ring99
11 Replies

10. Shell Programming and Scripting

sed problem - replacement string should be same length as matching string.

Hi guys, I hope you can help me with my problem. I have a text file that contains lines like this: 78 ANGELO -809.05 79 ANGELO2 -5,000.06 I need to find all occurences of amounts that are negative and replace them with x's 78 ANGELO xxxxxxx 79... (4 Replies)
Discussion started by: amangeles
4 Replies
Login or Register to Ask a Question