Понимание расширенного оператора SED / REGEXP

Самый простой способ - создать собственную службу xinetd следующим образом:

/etc/services:

...
foo             500/tcp
...

/etc/xinetd.d/foo:

service foo
{
        disable         = no
        bind            = 127.0.0.1
        socket_type     = stream
        protocol        = tcp
        log_on_failure += USERID
        server          = /usr/local/lib/foo.sh
        user            = il
        instances       = UNLIMITED
        wait            = no
        log_on_success  =
}

/usr/local/lib/foo.sh:

read ...
...
echo ...

Таким образом, ваш shell-скрипт будет выполняться для каждого клиентского соединения с stdin/stdout, подключенными непосредственно к сокету.

0
26.08.2018, 01:23
1 ответ

sed -E 's/.*"([^"]+)".*/\1/

  • -E:sedбудет использовать расширенное регулярное выражение
  • 's' :для замены значения.
  • /:разделитель шаблона и замены, который будет использоваться.
  • .*"([^"]+)".*:лучший известный мне способ объяснить регулярное выражение — это граф:
    regex explantation
    По сути, он соответствует каждой строке, в которой есть два блока кавычек, и помещает второй (без кавычек )внутри первой группы.
  • /:разделитель между вашим регулярным выражением и вашей заменой
  • \1:замените исходную строку на номер группы 1:1.22.0в этом случае.
  • /:последний разделитель без опций после него, поэтому он заменит только один раз строку.

Надеюсь, это объяснение достаточно хорошо.

5
28.01.2020, 02:42

Теги

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