Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
167 views
in Technique[技术] by (71.8m points)

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

question from:https://stackoverflow.com/questions/65925153/replace-character-from-file-in-matched-strings-lines-only

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...