How to replace part of string?


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
How to replace part of string?

Hi Gurus,

I need to replace part of string in file, the string format is below: I can use ABCD to find string, then replace values after "=" sign

Code:
ABCD_XXX=value
ABCD_YYY=value

after replace
Code:
ABCD_XXX=new_value
ABCD_YYY=new_value

my OS is SunOS 5.10 Generic_150400-64 sun4v sparc sun4v

thanks in advance

Last edited by green_k; 4 Weeks Ago at 03:30 PM..
# 2  
Hi, you can use an input file with the new key value pairs
Code:
$> cat file1
ABCD_XXX=new_value1
ABCD_YYY=new_value2
$> cat file2
foo
ABCD_XXX=value1
ABCD_YYY=value2
bar=baz

Try:
Code:
awk 'NR==FNR{A[$1]=$2; next} $1 in A{$2=A[$1]}1' FS='=' OFS='=' file1 file2

Output:
Code:
foo
ABCD_XXX=new_value1
ABCD_YYY=new_value2
bar=baz

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Quote:
Originally Posted by Scrutinizer
Hi, you can use an input file with the new key value pairs
Code:
$> cat file1
ABCD_XXX=new_value1
ABCD_YYY=new_value2
$> cat file2
foo
ABCD_XXX=value1
ABCD_YYY=value2
bar=baz

Try:
Code:
awk 'NR==FNR{A[$1]=$2; next} $1 in A{$2=A[$1]}1' FS='=' OFS='=' file1 file2

Output:
Code:
foo
ABCD_XXX=new_value1
ABCD_YYY=new_value2
bar=baz

thanks Scrutinizer. Sorry, I didn't give the sample properly. actually, there is only one value for all lines after equal. I updated my initial query. I tried to use awk command, I can use below command to print out correct result, but not sure how to replace it in file.

Code:
awk -F"=" '/ABCD/ {print $1"=value"}'  file

# 4  
You can redirect the output to a new file. If ok you can replace the old file with the new file:

Code:
nawk -F"=" '/ABCD/ {print $1"=value"}'  file > newfile

This User Gave Thanks to Scrutinizer For This Post:
# 5  
Quote:
Originally Posted by Scrutinizer
You can redirect the output to a new file. If ok you can replace the old file with the new file:

Code:
nawk -F"=" '/ABCD/ {print $1"=value"}'  file > newfile

thanks Scrutinizer.

in the file, it has other contents which need to keep "as is". above command only print the match ones. how can I keep these file content as is.
for example:
old file:

Code:
aaaaaa
bbbbb
ABCD_XXX=value
ccccc

after replace:
Code:
aaaaaa
bbbbb
ABCD_XXX=new_value
ccccc

# 6  
Hi Gurus,
I am able to use below command to get expected result. one more question:
I need to pass variable to this command, somehow it doesn't work.

Code:
awk -F"=" '!/ABCD/ {print $0}; /ABCD/ {print $1"=NEW_VALUE"}'  file > new_file

I use below command, it throw out error.
Code:
awk -F"=" -v var="$new_value" '!/ABCD/ {print $0}; /ABCD/ {print $1"=${var}"}'  file > new_file


Last edited by vgersh99; 4 Weeks Ago at 06:48 PM..
# 7  
Quote:
Originally Posted by green_k
Hi Gurus,
I am able to use below command to get expected result. one more question:
I need to pass variable to this command, somehow it doesn't work.

Code:
awk -F"=" '!/ABCD/ {print $0}; /ABCD/ {print $1"=NEW_VALUE"}'  file > new_file

I use below command, it throw out error.
Code:
awk -F"=" -v var="$new_value" '!/ABCD/ {print $0}; /ABCD/ {print $1"=${var}"}'  file > new_file

simplified and fixed:
Code:
awk -F= -v var="$new_value" '/ABCD/ {$1= "=" var} 1' file > new_file

These 2 Users Gave Thanks to vgersh99 For This Post:
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
SED - replace only on part of the string
Sephiburp
Hello there, I need some help. I have a file containing this : $ cat file PARM1=(VAL11),PARM2=(VAL21,VAL22,VAL23),PARM3=(VAL31),PARM4=(VAL41,VAL42) and I need to replace all the ',' by '|' but only those which are between brackets. Output would be :...... Shell Programming and Scripting
10
Shell Programming and Scripting
Replace a part of the string
vee_789
Hi I need to Replace a part of string in between one complete string. For e.g.. in the file the value is as: jobnm_$code_xyz_001 In script we are having a variable code=$3, where $3=ab final output should be jobnm_ab_xyz_001. But it is not working. Your help will be...... Shell Programming and Scripting
1
Shell Programming and Scripting
Seach for part of string and replace whole word
stinnes
I am trying to find words in a text with a certain ending with sed and replace them with themselves but wrapped in tabs ex.: The fish swims in the water. -> searching for -ms ending The fish <tab>swims<tab>in the water. I've been trying all sorts of commands and get either an error...... UNIX for Dummies Questions & Answers
5
UNIX for Dummies Questions & Answers
regarding replace a part of a string
madhu_aqua14
hi all. i have a file name like abcd_vbnh.a_p i have to copy it as abcd_vbnh.a every time... in unix not in perl please... UNIX for Dummies Questions & Answers
7
UNIX for Dummies Questions & Answers
using sed to replace a part of string
csejl
Hi, I have files that are named front1.txt to front999.txt. They are all in the same directory. To change "front" to "back", I am doing something like this. for file in *.txt; do new=`echo $file | sed 's/^**/back/g'` mv $file $new done My problem is what if files are named...... Shell Programming and Scripting
6
Shell Programming and Scripting