Как я могу использовать манипуляции со строкой для обнаружения и удаления двух разных частей строки?

Если ваше ядро ​​было собрано с включенным IKCONFIG_PROC , вы ' Я смогу получить конфигурацию из /proc/config.gz . Если он был собран с включенным IKCONFIG , вы сможете извлечь его из образа ядра с помощью сценария extract-ikconfig .

Если ни одна из опций конфигурации не включена, вам необходимо прочитать файл конфигурации из репозитория поставщика.

1
16.05.2016, 23:42
3 ответа

Сценарий оболочки POSIX:

inp="${domain#http*://}"

Тест:

for domain in 'https://foo.bar/baz' 'http://foo.bar/baz' ; do \
    inp="${domain#http*://}" ; \
    echo "$inp" ; \
done

Вывод:

foo.bar/baz
foo.bar/baz
1
27.01.2020, 23:19

Просто сделайте это дважды:

inp="${domain//http:'//'}"
inp="${inp//https:'//'}"
1
27.01.2020, 23:19

Кроме того, выполняется дважды:

Использование расширенного glob:

shopt -s extglob
v=${domain#http?(s)://}
printf "%s\n" "$v"

Использование внутренней переменной bash BASH_REMATCH:

Требуется протокол:

if [[ "$domain" =~ https?://(.*) ]]
then
    printf "%s\n" "${BASH_REMATCH[1]}"
else
    printf "Not valid input: '%s'\n" "$domain"
fi

Не требуется протокол:

[[ "$domain" =~ (https?://)?(.*) ]] && v="${BASH_REMATCH[2]}"
printf "%s\n" "$v"
2
27.01.2020, 23:19

Теги

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