如何从行中删除带有 uniq 字符的语法

如何从行中删除带有 uniq 字符的语法

我们有以下配置文件,env.gc.txt

export SERVER_GC_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{{hbase_log_dir}}/gc.log-`date +'%Y%m%d%H%M'`"

我们尝试-`date +'%Y%m%d%H%M'`从包含以下内容的行中删除语法SERVER_GC_OPTS

sed -i '/SERVER_GC_OPTS/ s/-`date +'%Y%m%d%H%M'`//g'

或者

sed '/SERVER_GC_OPTS/ s/-\`date +'%Y%m%d%H%M'\`//g'

但没有成功。

-`date +'%Y%m%d%H%M'`从行中删除语法 - 的最佳正确方法是什么?

(注:perl单衬也是一种选择)

预计产出env.gc.txt

export SERVER_GC_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{{hbase_log_dir}}/gc.log"

答案1

命令中使用的单引号date破坏了sed脚本。

尝试这个:

sed '/SERVER_GC_OPTS/s/-`date \+.*"$/"/' env.gc.txt

这将删除字符串-`date +和所有内容,直到结束双引号。

答案2

或者,只需查找反引号、一些非反引号字符和另一个要删除的反引号任何文件中的命令替换:

sed -i '/SERVER_GC_OPTS/ s/-`[^`]\+`//g' file

等效的 perl 是

perl -i -pe '/SERVER_GC_OPTS/ && s/-\`.+?\`//g' file

答案3

一种解决方法是在 周围使用双引号sed,如下所示:

sed   "/SERVER_GC_OPTS/ s/-\`date +'%Y%m%d%H%M'\`//g"

我们反斜杠反引号,因为它们在双引号下有效。

相关内容