#regex #bash #grep #config
#регулярное выражение #bash #grep #конфигурация
Вопрос:
У меня есть этот конфигурационный файл с именами записей, заключенными в квадратные скобки : []
. Мне нужно извлечь каждое имя записи в список или переменную для использования в for
цикле. Все еще новичок и возится с некоторыми командами. У меня такое чувство grep
, что это мой ответ, но я не знаю, с чего начать. Любая помощь будет оценена.
[dropbox]
type = dropbox
scope = dropbox
token = {"access_token":"my_token"}
[drive2]
type = drive
scope = drive
token = {"access_token":"other_token"}
Ответ №1:
Вы можете использовать sed:
sed -rn 's/(^[)(.*)(]$)/2/p' configfile
Включите регулярное выражение с помощью -r . Разделите каждую строку файла (configfile) на три раздела — начало строки, [ затем что-нибудь (.*) и затем], конец строки. Замените всю строку только на второй раздел и выведите.
Комментарии:
1. Идеальный. Делает именно то, что мне нужно, и я думаю, что даже понимаю это.
Ответ №2:
Вы можете использовать GNU grep
:
echo "[dropbox]ntype = dropbox" | grep -Po '[K[^]]*'
# Prints: dropbox
Здесь grep
используются следующие параметры:
-P
: Используйте регулярные выражения Perl.
-o
: Выводите только совпадения, 1 совпадение на строку, а не целые строки.
[K[^]]*
: литерал [
, экранированный, за которым следует специальный символ, K
который сообщает механизму регулярных выражений притвориться, что совпадение начинается с этой точки, за которой следует любой ]
несимвол, повторяющийся 0 или более раз ( [^]]*
) .
СМОТРИТЕ ТАКЖЕ:
grep
руководство