joy
joy

Reputation: 216

replace character from file in matched strings lines only

I am trying to replace "$" char from file in a single line where particular strings matched . In my case I am having a file like below

WHENEVER SQLERROR EXIT 1 ROLLBACK;
WHENEVER SQLERROR EXIT 1 ROLLBACK;

SET DEFINE OFF

DECLARE 
g_GITvision varchar2(100) := '$Testversion: 1234 $';
sql code
sql code

I want to remove "$" from only line which matched with starting of "g_GITvision". tried so far

sed -e 's/\(\^g_GITvision\)\$/\\' file

Any help would be apriciated.

Upvotes: 1

Views: 30

Answers (1)

Wiktor Stribiżew
Wiktor Stribiżew

Reputation: 627469

You can use

sed '/^g_GITvision/s/\$//g' file > newfile

Here,

  • /^g_GITvision/ - finds a line starting with g_GITvision
  • s/\$//g - replaces all $ chars on that line.

See an online sed demo:

s='WHENEVER SQLERROR EXIT 1 ROLLBACK;
WHENEVER SQLERROR EXIT 1 ROLLBACK;
 
SET DEFINE OFF
 
DECLARE
g_GITvision varchar2(100) := '"'"'$Testversion: 1234 $'"'"';
sql code
sql code'
sed '/^g_GITvision/s/\$//g'  <<< "$s"

Output:

WHENEVER SQLERROR EXIT 1 ROLLBACK;
WHENEVER SQLERROR EXIT 1 ROLLBACK;

SET DEFINE OFF

DECLARE
g_GITvision varchar2(100) := 'Testversion: 1234 ';
sql code
sql code

Upvotes: 2

Related Questions