How to replace part of string?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to replace part of string?
# 1  
Old 04-23-2019
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; 04-23-2019 at 04:30 PM..
# 2  
Old 04-23-2019
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  
Old 04-23-2019
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  
Old 04-23-2019
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  
Old 04-23-2019
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  
Old 04-23-2019
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; 04-23-2019 at 07:48 PM..
# 7  
Old 04-23-2019
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 Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed or awk command to replace a string pattern with another string based on position of this string

here is what i want to achieve... consider a file contains below contents. the file size is large about 60mb cat dump.sql INSERT INTO `table1` (`id`, `action`, `date`, `descrip`, `lastModified`) VALUES (1,'Change','2011-05-05 00:00:00','Account Updated','2012-02-10... (10 Replies)
Discussion started by: vivek d r
10 Replies

2. Shell Programming and Scripting

Deleting part of a string : string manipulation

i have something like this... echo "teCertificateId" | awk -F'Id' '{ print $1 }' | awk -F'te' '{ print $2 }' Certifica the awk should remove 'te' only if it is present at the start of the string.. anywhere else it should ignore it. expected output is Certificate (7 Replies)
Discussion started by: vivek d r
7 Replies

3. Shell Programming and Scripting

SED - replace only on part of the string

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 :... (10 Replies)
Discussion started by: Sephiburp
10 Replies

4. Shell Programming and Scripting

Replace a part of the string

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... (1 Reply)
Discussion started by: vee_789
1 Replies

5. Shell Programming and Scripting

How to find the count and replace the particular part of string in perl?

Hi, I am taking the current time using localtime function in perl. For example if the time is: #Using localtime $time = "12:3:10"; I have to replace the value 3 (03) i.e second position to be 03. The output should be: 12:03:10 But if the other string for example: $str:... (1 Reply)
Discussion started by: vanitham
1 Replies

6. UNIX for Dummies Questions & Answers

Seach for part of string and replace whole word

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... (5 Replies)
Discussion started by: stinnes
5 Replies

7. Shell Programming and Scripting

awk - replace number of string length from search and replace for a serialized array

Hello, I really would appreciate some help with a bash script for some string manipulation on an SQL dump: I'd like to be able to rename "sites/WHATEVER/files" to "sites/SOMETHINGELSE/files" within the sql dump. This is quite easy with sed: sed -e... (1 Reply)
Discussion started by: otrotipo
1 Replies

8. UNIX for Dummies Questions & Answers

replace part of single string in a file

hi! i have a file consisting of the following lines: (BTW, = space) . . . 12ME_T1mapping_flip30bshortf 13DCE_whole_brainbshortf 13DCE_3Dbshortf . . . the list of scans starts at 1 and goes on sometimes up to 60 scans. i would like to change only the lines that contain 'whole' to... (2 Replies)
Discussion started by: nixjennings
2 Replies

9. UNIX for Dummies Questions & Answers

regarding replace a part of a string

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 (7 Replies)
Discussion started by: madhu_aqua14
7 Replies

10. Shell Programming and Scripting

using sed to replace a part of string

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... (6 Replies)
Discussion started by: csejl
6 Replies
Login or Register to Ask a Question