Linux
如何從行中刪除帶有 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"
或者,只需查找一個反引號、一些非反引號字元和另一個反引號來刪除文件中的任何命令替換:
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 +`和所有內容,直到結束雙引號。