Extraindo Cadeia entre o símbolo fornecido

0

Eu quero extrair uma string entre um dado token de um arquivo, no meu caso é entre % . Eu destaquei as strings em Bold abaixo.

Conteúdo:

Update DIMENSIONPARAMETER set TEXTVALUE='http://%arm.se.host%:%arm.se.wls.listen.port%/CramerOSS/SyncEngineServlet/SyncProcessUnPauseServlet' where NAME='SyncEngine SyncProcessUnPauseServlet';

Ele também tem entrada onde apenas% somestring% está presente. Eu quero extrair apenas essa string.

    
por Abhijeet Anand 24.05.2018 / 07:07

3 respostas

4

Se todas as linhas no arquivo forem estruturadas como o exemplo, acredito que você pode usar o programa de linha de comando cut para tratar os sinais de porcentagem como delimitadores de campo e selecionar 2 nd e 4 th campos. Então, tente executar

cut -d "%" -f 2,4 --output-delimiter="," <file_name

Atualização: Eu não acho que nada precise ser alterado para o outro formato porque no padrão %string% o comando acima vê string como o segundo campo e o extrai. Eu tentei correr

echo "%string%" | cut -d "%" -f 2,4 --output-delimiter=","

e string foram impressos na saída padrão.

    
por Kartik Sabharwal 24.05.2018 / 07:47
2

Usando grep como você mencionou "have %string% simply present" :

grep -o '%[^%]*%' infile
    
por devWeek 24.05.2018 / 09:50
0

Tente isso.

sed -r 's/[^%]*%([^%]*)%\S*(\s)*//g'

É fácil de extrair para ocorrência única usando sed. Para múltiplas ocorrências, eu encontrei algo assim antes para um problema similar. Eu não consegui encontrar esse segmento.

Ok, isso detecta a primeira ocorrência corretamente, mas não a segunda ocorrência. Não vai funcionar.

A resposta de Karthik funciona perfeitamente!

    
por okcomputer_kid 24.05.2018 / 08:10