Ошибка регулярного выражения `sed`

pwd -P

(в любой оболочке POSIX) - это команда, которую вы ищете.

-P предназначен для физического (в отличие от логического ( -L , по умолчанию), где pwd в основном) выгружает содержимое $ PWD (которое оболочка поддерживает на основе аргументов, которые вы даете cd или pushd )).

$ ln -s . /tmp/here
$ cd /tmp/here/here
$ cd ../here/here
$ pwd
/tmp/here/here/here
$ pwd -P
/tmp
3
28.07.2016, 14:18
3 ответа

Обычно я бы сказал «используйте jq или jsonpipe или аналогичный, если вы хотите анализировать или извлекать данные из json», но докер проверяет Команда уже имеет встроенное форматирование вывода и извлечение полей.

Вы можете указать docker inspect , чтобы он возвращал только интересующие вас поля, например

alias redis-ip="docker inspect -f '{{.NetworkSettings.IPAddress}}' redis"

или

alias redis-ip='docker inspect -f '\''{{.NetworkSettings.IPAddress}}'\'' redis'

Это (кратко) задокументировано на https://docs.docker.com/engine/reference/commandline/inspect/

См. Также Что проверять, когда вы Просматривая для получения более подробной информации и примеров. А Docker Inspect Template Magic - еще одна запись в блоге с хорошим обзором того, что возможно с форматированием вывода docker inspect, и еще несколькими полезными примерами.

1
27.01.2020, 21:13

Используйте для этого функцию оболочки, а не псевдоним:

function redis-ip {
  docker inspect redis |
  grep IPAddress |
  awk 'NR == 3 { print $2 }' |
  sed 's/[^"]*"\([^"]*\)".*/\1/'
}

Если sed делает то, что вы хотите, или нет, я не знаю, как Я не знаю, что выводит команда docker .

3
27.01.2020, 21:13

Проблема в том, что ваш псевдоним заключен в двойные кавычки ( "). Это означает, что $ 2 в вашем awk скрипте передается в shell, а не awk и что двойные кавычки в вашей команде sed портят ваш псевдоним. Если вы сделаете это вместо этого, ваш псевдоним должен работать должным образом:

alias redis- ip = "докер проверяет Redis | grep IPAddress | awk 'NR == 3 {print \ $ 2}' | sed 's / [^ \ "] * \" \ ([^ \ "] * \) \". * / \ 1 /' "

Наверное, лучше и, конечно, проще использовать функцию хотя.

2
27.01.2020, 21:13

Теги

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