搜索并删除特殊字符

搜索并删除特殊字符

我的 DDL 文件中有以下字符串,我想删除最后一个)字符。

DDL)在很多地方都有这个字符,但我只想删除下面指出的地方。

..
`event_sts` string,
  `rsn_code` string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '|'
ESCAPED BY '\\\\')                     <----- here
STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'

我尝试使用 sed 但不知何故它不起作用。

注意:我有许多具有相同要求的 DDL,因此“(”的出现不是静态的。

答案1

这将从)包含以下内容的行中删除所有内容ESCAPED

sed '/ESCAPED/s/)//g' filename

要就地更改文件:

sed -i.bak '/ESCAPED/s/)//g' filename

怎么运行的

  • /ESCAPED/

    这仅选择那些包含 的行ESCAPED

  • s/)//g

    对于选定的行,这将删除所有).

    substutute 命令通常看起来像s/old/new/查找正则表达式old并将其替换为new.在我们的例子中,oldis)newis 是一个空字符串。因此)被删除。g命令末尾的 告诉 sed 对行中每次出现的 执行此操作,)而不仅仅是第一次。

相关内容