Criando um padrão inteligente com o GNU SED [duplicado]

-7

Esta é a string de origem:

%5B++The+transmission+is+%5B150mhz%5D+The+year+is+%282017%29+This+is+%2A+great+%2A+so+far++%5D
  • É possível fazer um padrão apenas com o GNU SED para:
    1. Substituir uma chamuscada + por um único espaço
    2. De %**abc a "\x**"abc (os primeiros dois caracteres após o% ser sempre hexadecimal UTF-8)
    3. Cada sentença deve ter uma "no início e outra" no final da sentença

Então o resultado é assim:

"\x5B"  "The" "transmission" "is" "\x5B"150mhz"\x5D" "The" "year" "is" "\x28"2017"\x29" "This" "is" "\x2A" "great" "\x2A" "so" "far"  "\x5D"

Então, quando echo é usado com a string:

echo -e "\x5B"  "The" "transmission" "is" "\x5B"150mhz"\x5D" "The" "year" "is" "\x28"2017"\x29" "This" "is" "\x2A" "great" "\x2A" "so" "far"  "\x5D"

Será exatamente assim:

[ The transmission is [150mhz] The year is (2017) This is * great * so far ]
    
por GoldHaloWings 25.11.2017 / 04:56

1 resposta

4

Isso funciona:

sed -r -e 's/(.*)/""/' -e 's/\+/" "/g' -e 's/""/ /g' -e 's/\%/\x/g' -e 's/("\x.{2})/"/g' -e 's/""\s+/" /g' -e 's/"(.*)"/"/' -e 's/([^"]|(([0-9]|[a-z])))(\x[0-9]([a-zA-Z]|[0-9]))" /"" /g' src.txt

Resultado:

"\x5B"  "The" "transmission" "is" "\x5B"150mhz"\x5D" "The" "year" "is" "\x28"2017"\x29" "This" "is" "\x2A" "great" "\x2A" "so" "far"  "\x5D"

Então, em diante:

echo -e "\x5B"  "The" "transmission" "is" "\x5B"150mhz"\x5D" "The" "year" "is" "\x28"2017"\x29" "This" "is" "\x2A" "great" "\x2A" "so" "far"  "\x5D"

Resultado:

[ The transmission is [150mhz] The year is (2017) This is * great * so far ]

Eu não acho que o sed seja a melhor ferramenta para usar aqui, mas desde que você esteja procurando aprender.

    
por George Udosen 25.11.2017 / 05:10