Устное чтение регулярного выражения sed каретка внутри скобок, звездочка вне скобок

Заставить apt-get использовать IPv4:

apt-get install -o Acquire::ForceIPv4=true libssl-dev

Чтобы сделать его постоянным:

echo 'Acquire::ForceIPv4 "true";' > /etc/apt/apt.conf.d/42ipv4
1
03.08.2017, 01:03
2 ответа
NODE                     EXPLANATION
--------------------------------------------------------------------------------
  [^"]*                    any character except: '"' (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  "                        '"'
--------------------------------------------------------------------------------
  \(                        group and capture to \1:
--------------------------------------------------------------------------------
    [^"]*                    any character except: '"' (0 or more
                             times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  \)                        end of \1
--------------------------------------------------------------------------------
  "                        '"'
--------------------------------------------------------------------------------
 .*                       any character except \n (0 or more times
                           (matching the most amount possible))

Второй компонент команды sedвызывает \1для использования того, что было «захвачено» в скобках. Следует отметить, что вся команда sedсама по себе не является регулярным выражением. В конструкции s/needle/pin/gрегулярное выражение имеет вид needleили, если вам нравится, когда ваши регулярные выражения «завернуты» (e. г. для использования в awk), /needle/.

3
27.01.2020, 23:24

Поскольку [^"]*означает «любое количество символов, не являющееся кавычками», и поскольку регулярное выражение sedявляется жадным, [^"]*гарантирует, что следующая кавычка будет первой кавычкой в ​​строке. Второе подобное регулярное выражение гарантирует, что следующая цитата будет второй в строке. .*соответствует тому, что следует за второй цитатой.

Таким образом, [^"]*"\([^"]*\)".*означает «сопоставить всю строку и поместить вторую кавычку -в поле с разделителями в \1».

1
27.01.2020, 23:24

Теги

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