Удалить фиксированный префикс / суффикс из строки в Bash

Итак, вы ищете значение (из строки запроса) в столбце с разделителями пробелов в базе данных? И вы используете Split для запроса отдельных значений внутри базы данных?

(просто проверяя мои предположения ...)

string.Split не поддерживается таким образом ( в базе данных по данным столбца) - см. здесь поддерживаемые строковые операции . (обратите внимание, что string.Split явно явно не поддерживается).

Я ленив; когда я делит данные в базе данных (относительно редко), я всегда добавляю один и тот же разделитель к началу и концу данных; то я могу просто искать:

string searchFor = DELIMITER + searchValue + DELIMITER;
...
.Where(row => row.Value.Contains(searchFor));

Однако; в этом случае я ожидаю, что наиболее практичным вариантом может быть запись функции UDF, которая выполняет поиск в разделителе varchar (правильно обрабатывает первый / последний элемент) и выставляет UDF в контексте данных - затем используйте:

.Where(row => ctx.ContainsValue(row.Value, searchValue)); // ContainsValue is our UDF

Или - нормализовать данные ...

.Where(row => row.Values.Any(s=>s.Value == searchValue));

396
задан Mateusz Piotrowski 26 January 2017 в 11:35
поделиться

1 ответ

Я использовал бы группы получения в regex:

$ string="hello-world"
$ prefix="hell"
$ suffix="ld"
$ set +H # Disables history substitution, can be omitted in scripts.
$ perl -pe "s/${prefix}((?:(?!(${suffix})).)*)${suffix}/\1/" <<< $string
o-wor
$ string1=$string$string
$ perl -pe "s/${prefix}((?:(?!(${suffix})).)*)${suffix}/\1/g" <<< $string1
o-woro-wor

((?:(?!(${suffix})).)*) удостоверяется, что содержание ${suffix} будет исключено из группы получения. С точки зрения примера это - строка, эквивалентная [^A-Z]*. Иначе Вы доберетесь:

$ perl -pe "s/${prefix}(.*)${suffix}/\1/g" <<< $string1
o-worldhello-wor
0
ответ дан Bayou 4 October 2019 в 10:16
поделиться
Другие вопросы по тегам:

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