Unix/Linux Go Back    


Shell Programming and Scripting BSD, Linux, and UNIX shell scripting — Post awk, bash, csh, ksh, perl, php, python, sed, sh, shell scripts, and other shell scripting languages questions here.

pipe output of grep to sed?

Shell Programming and Scripting


Closed    
 
Thread Tools Search this Thread Display Modes
    #1  
Old Unix and Linux 07-01-2009   -   Original Discussion by arsh
arsh arsh is offline
Registered User
 
Join Date: Aug 2007
Last Activity: 1 July 2009, 6:23 AM EDT
Posts: 3
Thanks: 0
Thanked 0 Times in 0 Posts
pipe output of grep to sed?

Is there a way I can do this:

search for text and replace line containing matched text with a different line?
For example:

"I want to replace text"

I want to search for replace and then change the line to

I am perplexed.

Hope that makes sense.

Thanks in advance.
Sponsored Links
    #2  
Old Unix and Linux 07-01-2009   -   Original Discussion by arsh
vikas_kesarwani vikas_kesarwani is offline
Registered User
 
Join Date: Jul 2008
Last Activity: 9 June 2010, 9:14 AM EDT
Posts: 21
Thanks: 0
Thanked 0 Times in 0 Posts
You can try this:

grep replace | sed 's/replace/perpleaxed/g'

Or you want to relpace line then;
grep replace | sed 's/I want to replace text/I am perplexed/g'
Sponsored Links
    #3  
Old Unix and Linux 07-01-2009   -   Original Discussion by arsh
Scott's Unix or Linux Image
Scott Scott is offline Forum Staff  
Administrator
 
Join Date: Jun 2009
Last Activity: 19 November 2017, 9:15 PM EST
Location: Zürich
Posts: 8,824
Thanks: 366
Thanked 1,197 Times in 1,023 Posts
You don't need to use grep at all. sed would be enough.


Code:
# Replace the whole line with a new one
sed -e "s/.*old_string.*/new_string/"

# Replace the chosen string with a new one
sed -e "s/old_string/new_string/"

# Replace every occurance of the chosen string with a new one
 sed -e "s/old_string/new_string/g"

    #4  
Old Unix and Linux 07-01-2009   -   Original Discussion by arsh
arsh arsh is offline
Registered User
 
Join Date: Aug 2007
Last Activity: 1 July 2009, 6:23 AM EDT
Posts: 3
Thanks: 0
Thanked 0 Times in 0 Posts
Let me be more specific here:

I have two variables in a shell script that I assign by reading contents of a file
The contents are as such
a="$var1=xyz"
b="$var1=abc"

I need to search a second file for occurences of $var1=xyz and replace it with
$var1=abc

I have used sed -s 's/'"$a"'/'"$b"'/g' which works fine but whenever the contents of variable a contain some special characters for example a="$var1=fdh&%4"
the replace is not working. If I change the value to just a="$var1=", the above sed works successfully to replace $var1= in the file to $var1=abc.

Can anybody please help?
Sponsored Links
    #5  
Old Unix and Linux 07-01-2009   -   Original Discussion by arsh
vikas_kesarwani vikas_kesarwani is offline
Registered User
 
Join Date: Jul 2008
Last Activity: 9 June 2010, 9:14 AM EDT
Posts: 21
Thanks: 0
Thanked 0 Times in 0 Posts
please put a backlash "\" before special characters

sed 's/\*/\@/g'


replaces * with @
Sponsored Links
Closed

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Linux More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
problem using a pipe to grep ShellBeginner Shell Programming and Scripting 4 05-31-2009 10:14 AM
pipe report output to another server mirx Shell Programming and Scripting 2 04-05-2009 07:41 PM
pipe output to two files NobluesFDT UNIX for Dummies Questions & Answers 2 08-06-2008 06:54 PM
how to pipe output of here-document!! sami98 Shell Programming and Scripting 7 02-17-2008 10:40 AM
output string message to pipe princelinux Programming 3 08-18-2006 03:09 AM



All times are GMT -4. The time now is 10:16 PM.