Sponsored Content
Full Discussion: sed replace pattern
Top Forums UNIX for Beginners Questions & Answers sed replace pattern Post 302984515 by Beginner101 on Wednesday 26th of October 2016 03:44:18 PM
Old 10-26-2016
Hi guys
sorry for the confusion. Ill explain.

@MadeInGermany:
the solution you provided with pattern/newval works perfectly fine.
I can modify "pattern" to be any portion of the string in each line, and the last digit will be replaced.

THe only change right now is I want to get the "pattern" and "newval" parameters required to do the sed by parsing a third variable, instead of defining them explicitly. The main problem seems to be with evaluating the vars.

Right now if I specify everything on the command line it works:
Code:
pattern='info:200\/text\/name1:1.2.300'

-->(im escaping the / and im definning it in single quotes )
Code:
newval=8

Code:
echo " $pattern "

-> info:200\/text\/name1:1.2.300
Code:
echo " $newval "

--> 8


and call sed:
Code:
sed '/'"$pattern"\.'/ s/\(.*\.\)[0-9]\{1,\}/\1'"$newval"'/' file

input (from file):
Code:
person1_desc: 'info:200/text/name1:1.2.300.X'

output:
Code:
person1_desc: 'info:200/text/name1:1.2.300.8'

This is great. So now I will try to get the values from a new variable called $input_line

Code:
input_line=info:200/text/name1:1.2.300.8

parse it:
Code:
pattern_2=$( echo $input_line | sed 's/\.[^.]*$//' )

--> info:200/text/name1:1.2.300

Code:
newval_2=$( echo  $input_line | sed 's/.*\.//' )

--> 8

Code:
echo " $pattern_2 "

--> info:200/text/name1:1.2.300
Code:
echo "$newval_2 "

--> 8

so now if I call the exact same sed command, it doesnt work:
Code:
sed '/'"$pattern"\.'/ s/\(.*\.\)[0-9]\{1,\}/\1'"$newval"'/' file

I get:
Code:
sed: -e expression #1, char 33: extra characters after command


so thats why I want to
1. escape the slash in $pattern_2
2. not sure if I need to put $pattern_2 in single quotes?
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. Shell Programming and Scripting

Pattern Replace using sed or awk

Hi , My file have data like 4:ALMOST NEVER PR 1925836 5:NEVER PR W DDA 5857610 6:NEVER PR WO DDA 26770205 but i want to replace the spaces before last numric digits out put should be like this 4:ALMOST NEVER PR=1925836 5:NEVER PR W DDA=5857610 6:NEVER PR WO... (7 Replies)
Discussion started by: max_hammer
7 Replies

5. Shell Programming and Scripting

Replace everything but pattern in a line using sed

I have a file with multiple lines like this: <junk><PATTERN><junk><PATTERN><junk> <junk><PATTERN><junk><PATTERN><junk><PATTERN><junk> Note that 1. There might be variable number occurrences of PATTERN in a line. 2. <> are just placeholders, they do not form part of the pattern. I need... (4 Replies)
Discussion started by: flatley
4 Replies

6. Shell Programming and Scripting

sed to replace pattern with filename

Hi all, I'm trying to replace a pattern/string in about 100 files with the filename using following commands but getting nowhere: for f in *.fa; do sed "s/^>.*/>$f/g" $f > $f_v1.fa; done for f in *.fa; do sed 's/^>.*/>`echo $f`/' > $fa_v1.fa; done Basically I want to change any line... (5 Replies)
Discussion started by: ivpz
5 Replies

7. 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

8. Shell Programming and Scripting

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

I've got a file like so: ...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.... (5 Replies)
Discussion started by: DaHai
5 Replies

9. Shell Programming and Scripting

sed - Search and replace within pattern

Hi Guys! Unix newbie here! Have a requirement for which I have been scouting the forums for a solution but has been out of luck so far :( I have a file which contains the following:- TEST1|TEST2|"TEST3|1@!2"|TEST5 My sed command should result in either one the following output:-... (6 Replies)
Discussion started by: hishamzz
6 Replies

10. 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
All times are GMT -4. The time now is 11:43 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy