como remover a sintaxe com caracteres uniq da linha

2

temos o seguinte arquivo de configuração, 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''"

Tentamos remover a sintaxe -'date +'%Y%m%d%H%M'' da linha que contém SERVER_GC_OPTS

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

ou

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

mas sem sucesso.

Qual é a melhor abordagem correta para remover a sintaxe - -'date +'%Y%m%d%H%M'' da linha?

(Nota: um forro perl one também é uma opção)

Saída esperada em env.gc.txt

export SERVER_GC_OPTS="-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:{{hbase_log_dir}}/gc.log"
    
por yael 14.08.2018 / 16:14

3 respostas

0

Ou apenas procure por um backtick, alguns caracteres não-backtick e outro backtick para remover qualquer substituição de comandos no arquivo:

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

O equivalente perl seria

perl -i -pe '/SERVER_GC_OPTS/ && s/-\'.+?\'//g' file
    
por 14.08.2018 / 17:21
4

A aspa simples usada no comando date está quebrando o script sed .

Tente isto:

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

Isso removerá a string -'date + e tudo até a aspa dupla final.

    
por 14.08.2018 / 16:28
0

Uma saída é usar aspas duplas em torno de sed , como em:

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

Nós backslash os backticks desde que eles ganham vida sob aspas duplas.

    
por 14.08.2018 / 18:40