Linux

如何從行中刪除帶有 uniq 字元的語法

  • August 14, 2018

我們有以下配置文件,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"

或者,只需查找一個反引號、一些非反引號字元和另一個反引號來刪除文件中的任何命令替換:

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

等效的 perl 將是

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

命令中使用的單引號date破壞了sed腳本。

試試這個:

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

這將刪除字元串-date +`和所有內容,直到結束雙引號。

引用自:https://unix.stackexchange.com/questions/462525