“круглые скобки, не сбалансированные” даже при том, что я вышел из него?

Не зная больше из Вашего /etc/network/interfaces, Я могу только надеяться, что мой рабочий пример помогает Вам:

/etc/network/interfaces относительно wlan0:

auto wlan0
iface wlan0 inet manual
    wpa-driver wext
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

# known networks
iface default inet dhcp

с /etc/wpa_supplicant/wpa_supplicant.conf список беспроводных сетей я иногда использую, например.

network={
        ssid="network1"
        key_mgmt=NONE
}
network={
        ssid="this-other-one"
        key_mgmt=WPA-PSK
        psk="wassport"
}

Теперь, если существует известная сеть для соединения с, ifup механизм запустит процесс клиента DHCP в интерфейсе после соединения успешно.

Посмотрите /usr/share/doc/ifupdown/examples для более рабочих примеров и намного большей информации.

10
07.12.2014, 17:53
3 ответа

escaped ( имеет особое значение в sed: он использовался для обратных ссылок . Для сравнения буквального значения (, просто используйте его без обратной косой черты: /VALUES ([0-9]/d!

Если вы пытаетесь найти совпадение с \(, то вместо этого используйте \: \\(

Побег (пробел) не имеет значения.

13
27.01.2020, 20:01

По умолчанию, sed используйте Basic Regular Expression (BRE). В BRE, \( и \) используются для определения подвыражения:

Подвыражение может быть определено внутри BRE, заключив его между пары символов "(" и ")". Такое подвыражение должно соответствовать что бы это ни совпадало без "(" и ")", кроме того. фиксация внутри подвыражений является необязательным поведением; см. BRE Экспрессионное якорьё. Подвыражения могут быть произвольно вложены.

Тогда можно использовать обратное выражение '\n', чтобы соответствовать той же (возможно пустой) строке символов, что и подвыражение, заключенное между \( и \), где n от 1 до 9. Здесь используются только левые круглые скобки \(, sed, которые не могут найти правые скобки и вызывают ошибку.

В BRE вы просто используете ( для сравнения буквальных левых круглых скобок.

В некоторых реализациях sed можно переключиться на Extended Regular Expressions (ERE) (пример GNU sed с опцией -r), поэтому вы должны использовать \( для сравнения буквальных левых круглых скобок.

5
27.01.2020, 20:01

Именно по этой причине. В этом случае не следует уклоняться от скобок.

Одиночные кавычки ' уже говорят оболочке не беспокоиться о содержимом строки, поэтому она передается буквально в sed. Побег из скобки говорит sed ожидать окончания \) в качестве разделителя для подрегекса.

0
27.01.2020, 20:01

Теги

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