【问题标题】:replace character from file in matched strings lines only仅在匹配的字符串行中替换文件中的字符
【发布时间】:2021-05-01 15:24:48
【问题描述】:

我正在尝试在特定字符串匹配的单行中替换文件中的“$”字符。 就我而言,我有一个如下所示的文件

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

SET DEFINE OFF

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

我想从与“g_GITvision”开头匹配的唯一行中删除“$”。 到目前为止尝试过

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

如有任何帮助,将不胜感激。

【问题讨论】:

    标签: regex unix sed scripting


    【解决方案1】:

    你可以使用

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

    这里,

    • /^g_GITvision/ - 查找以 g_GITvision 开头的行
    • s/\$//g - 替换该行上的所有 $ 字符。

    查看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"
    

    输出:

    WHENEVER SQLERROR EXIT 1 ROLLBACK;
    WHENEVER SQLERROR EXIT 1 ROLLBACK;
    
    SET DEFINE OFF
    
    DECLARE
    g_GITvision varchar2(100) := 'Testversion: 1234 ';
    sql code
    sql code
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-09
      • 2015-12-18
      • 2019-12-05
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      相关资源
      最近更新 更多