Создание умного шаблона с GNU SED [ duplicate]

Это исходная строка:

%5B++The+transmission+is+%5B150mhz%5D+The+year+is+%282017%29+This+is+%2A+great+%2A+so+far++%5D
  • Можно ли создать шаблон только с GNU SED для:
    1. Заменить от одного + до одного пробела
    2. От % ** abc до «\ x **» abc (первые два символа после% всегда шестнадцатеричные UTF-8)
    3. В каждом предложении должно быть одно «в начале и одно» в конце предложения.

Таким образом, результат будет примерно таким:

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

Итак, когда эхо используется со строкой:

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

Результат будет точно вот так:

[ The transmission is [150mhz] The year is (2017) This is * great * so far ]
-7
задан 26 November 2017 в 07:51

1 ответ

Это работает:

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

Результат:

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

Затем на:

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

Результат:

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

Я не думаю sed лучший инструмент должен использовать здесь, но начиная с того, что вы смотрели учатся.

4
ответ дан 26 November 2017 в 07:51

Другие вопросы по тегам:

Похожие вопросы: