sed find/replace a pattern, but not this one..


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed find/replace a pattern, but not this one..
# 1  
Old 05-23-2015
Wrench sed find/replace a pattern, but not this one..

I've got a file like so:

Code:
...lots of lines, etc.
push "route 10.8.0.0 255.255.255.0"
push "route 192.168.1.123 255.255.255.0"
...lots of lines, etc.

I want to sed find/replace the IP address in the second line, whatever it is, with a new IP address, but I don't want to touch the first line.

So essential I want to find the line like:

Code:
push "route [0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3} 255.255.255.0"

But NOT have it match the push "route 10.8.0.0 255.255.255.0" line

There are lots of lines in the file, so the could be anywhere in it.


Thank you!!!!

Last edited by Scott; 05-23-2015 at 08:47 AM.. Reason: (more) code tags
# 2  
Old 05-23-2015
Please use code tags as required by forum rules!

Try
Code:
sed  -r '/10.8.0.0/n; s/route [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 255.255.255.0/Josef/' file

or
Code:
sed  '/10.8.0.0/n; s/route [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\} 255.255.255.0/Josef/' file

# 3  
Old 05-23-2015
Sorry about not using code tags, I've added them. It wasn't really code, though. What I wrote was crap Smilie

Thanks for the reply and help!!!
# 4  
Old 05-23-2015
More precise is / 10\.8\.0\.0 /. Perhaps the following is easier to handle?
Code:
sed '/route / {/ 10\.8\.0\.0 /n; s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/newip/;}' file

# 5  
Old 05-24-2015
Thanks!

Thank you both for your help!

Here is what I created using both your suggestions:

Code:
sed -i -r "/10\.8\.0\.0/n; s/route +([0-9]{1,3}\.){3}[0-9]{1,3} +255\.255\.255\.0/route $RASPI_IP 255.255.255.0/g

I added 'route' and '255.255.255.0' to the pattern to make sure it would find the correct line and not just any ip match other than 10.8.0.0

Thanks again!
# 6  
Old 05-24-2015
Consider this input:

Code:
...lots of lines, etc.
push "route 10.8.0.0 255.255.255.0"
push "route 10.8.0.0 255.255.255.0"
push "route 10.8.0.0 255.255.255.0"
push "route 192.168.1.123 255.255.255.0"
...lots of lines, etc

The following solution might avoid unintended replacements:

Code:
sed '/route / {/ 10\.8\.0\.0 /!s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/newip/;}' file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Find pattern and replace using sed

Hi, i want to replace the following lines in such a way that if the word merge exists in first column it must replace the 3rd column as M and if parse exists in first column then the last column must P, if neither it must mark it as X. I have tried the solution using awk, but it is saying... (6 Replies)
Discussion started by: charlie87
6 Replies

2. UNIX for Beginners Questions & Answers

sed replace pattern

I have a file with multiple lines, all in the same format. For each line, I need to replace the sequence of digits after the last : with a new value, but keep the single quote at the end of the line. Example: Input: ( two lines of file) Name: 'text1:200/text2:1.2.3.4' Name2:... (19 Replies)
Discussion started by: Beginner101
19 Replies

3. Shell Programming and Scripting

sed -- Find pattern -- print remainder -- plus lines up to pattern -- Minus pattern

The intended result should be : PDF converters 'empty line' gpdftext and pdftotext?xml version="1.0"?> xml:space="preserve"><note-content version="0.1" xmlns:/tomboy/link" xmlns:size="http://beatniksoftware.com/tomboy/size">PDF converters gpdftext and pdftotext</note-content>... (9 Replies)
Discussion started by: Klasform
9 Replies

4. Shell Programming and Scripting

sed command to replace two character pattern with another pattern

Not able to paste my content. Please see the attachment :-( (2 Replies)
Discussion started by: vivek d r
2 Replies

5. Shell Programming and Scripting

sed help, Find a pattern, replace it with same text minus leading 0

HI Folks, I'm looking for a solution for this issue. I want to find the Pattern 0/ and replace it with /. I'm just removing the leading zero. I can find the Pattern but it always puts literal value as a replacement. What am I missing?? sed -e s/0\//\//g File1 > File2 edit by... (3 Replies)
Discussion started by: SirHenry1
3 Replies

6. Shell Programming and Scripting

How to replace the last pattern using sed?

myfile: AAAaaa BBBbbb CCCccc AAAeee DDDddd how to replace the last AAA as EEEEE using sed? like this: AAAaaa BBBbbb CCCccc EEEEEeee DDDddd (14 Replies)
Discussion started by: vistastar
14 Replies

7. Shell Programming and Scripting

find a pattern and replace

i have a file which contains lines like this. intsrcrpttrn1099mctrl:export GRAPHPARM_AR="-input_code M302023" intsrcrpttrn1099mload:export GRAPHPARM_AR="-input_code M192023" intsrcrpttrn1099mload:export GRAPHPARM_AR="-input_code P192023" the value after -input_code starts with some alphabet... (4 Replies)
Discussion started by: dr46014
4 Replies

8. Shell Programming and Scripting

sed: Find start of pattern and extract text to end of line, including the pattern

This is my first post, please be nice. I have tried to google and read different tutorials. The task at hand is: Input file input.txt (example) abc123defhij-E-1234jslo 456ujs-W-abXjklp From this file the task is to grep the -E- and -W- strings that are unique and write a new file... (5 Replies)
Discussion started by: TestTomas
5 Replies

9. Shell Programming and Scripting

SED Search Pattern and Replace with the Pattern

Hello All, I have a string "CP_STATUS OSSRC_R6_0_Shipment_R1H_CU AOM_901046 R1H_LLSV1_2008031", and I just want to extract LLSV1, but I dont get the expected result when using the sed command below. # echo "CP_STATUS OSSRC_R6_0_Shipment_R1H_CU AOM_901046 R1H_LLSV1_2008031" | awk '{print... (4 Replies)
Discussion started by: racbern
4 Replies

10. Shell Programming and Scripting

Find a pattern and replace using sed.

Hi I need to help on finding the below pattern using sed <b><a href="/home/document.do?assetkey=x-y-abcde-1&searchclause=photo"> and replace as below in the same line on the index file. <b><a href="/abcde.html"> thx in advance. Mari (5 Replies)
Discussion started by: maridhasan
5 Replies
Login or Register to Ask a Question