我的 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
.在我们的例子中,old
is)
和new
is 是一个空字符串。因此)
被删除。g
命令末尾的 告诉 sed 对行中每次出现的 执行此操作,)
而不仅仅是第一次。