Procura e remove caracteres especiais

3

Eu tenho uma string abaixo no meu arquivo DDL e desejo remover o último caractere ) .

DDL tem o caractere ) em muitos lugares, mas quero removê-lo apenas no local abaixo indicado.

..
'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'

Eu tentei usar sed mas de alguma forma não está funcionando.

nota: Eu tenho muitos DDLs com o mesmo requisito, então a ocorrência de '(' não é estática.

    
por dileepvarma 28.08.2016 / 01:11

1 resposta

3

Isso removerá todos os ) de qualquer linha que contenha ESCAPED :

sed '/ESCAPED/s/)//g' filename

Para alterar o arquivo no local:

sed -i.bak '/ESCAPED/s/)//g' filename

Como funciona

  • /ESCAPED/

    Isso seleciona apenas as linhas que contêm ESCAPED .

  • s/)//g

    Para as linhas selecionadas, isso remove todos os ) .

    O comando substutute normalmente se parece com s/old/new/ , que procura a expressão regular old e a substitui por new . No nosso caso old é ) e new é uma string vazia. Consequentemente ) é removido. O g no final do comando diz ao sed para fazer isso para cada ocorrência de ) na linha, não apenas no primeiro.

por 28.08.2016 / 02:25