заменить последние два возникновения запятых с точками

Что насчет varnish_reload_vcl ?

Некоторые примеры:

  1. Без проблем в вашем файле VCL

     $ varnish_reload_vcl { {1}} Загрузка vcl из /etc/varnish/default.vcl
    Имя текущей запущенной конфигурации reload_2016-01-28T15: 18: 23 
    Использование нового имени конфигурации reload_2016-01-28T15: 19 : 57 
    VCL скомпилирован. 
    VCL 'reload_2016-01-28T15: 19: 57' сейчас активен 
    доступен 0 загрузок 
    доступен 0 reload_2016-01-28T14: 40:04 
    доступно 0 reload_2016-01-28T14: 42: 07 
    доступно 0 reload_2016-01-28T14: 42: 32 
    доступно 0 reload_2016-01-28T14: 47: 45 
    доступно 0 reload_2016-01-28T14: 48: 45 
    доступно 0 reload_2016-01-28T14: 50: 26 
    доступно 0 reload_2016-01-28T14: 55: 55 { {1}} доступно 0 reload_2016-01-28T15: 18: 23 
    active 0 reload_2016-01-28T15: 19: 57 
     
    Готово 
     
  2. Ошибка в вашем файле VCL

     $ varnish_reload_vcl 
    Загрузка vcl из /etc/varnish/default.vcl
    Имя текущей запущенной конфигурации - reload_2016-01-28T15: 19: 57 
    Использование нового имени конфигурации reload_2016-01-28T15: 21: 51 
    Сообщение от компилятора VCC: 
    Символ не найден: 'b1' (ожидаемый тип BACKEND): {{1 }} ('input', строка 77, позиция 32) 
    установить req.backend_hint = b1; 
     ---------------------- --------- ## - 
     
    Не удалось запустить VCC-компилятор, завершился с 2 
    Ошибка компиляции VCL 
    Команда завершилась неудачно с кодом ошибки 106 
    varnishadm -S / etc / varnish / secret -T 127.0.0.1:6082 Ошибка vcl.load 
     
0
11.01.2019, 11:18
3 ответа
echo 'abc,def,12379,foo' | sed -e 's/\(.*\),/\1./' -e 's/\(.*\),/\1./'

или

echo 'abc,def,12379,foo' | sed -e 's/\(.*\),/\1./;s/\(.*\),/\1./'
0
28.01.2020, 02:41

Используя awk, рассматривая ввод как набор полей, разделенных запятыми -, и соединяя три последних поля точками,

echo 'abc,def,12379,foo' |
awk 'BEGIN { OFS=FS="," } { print $1, $2 "." $3 "." $4 }'
0
28.01.2020, 02:41

Попробуйте это:

$ echo 'abc,def,12379,foo' | sed 's/,\([^,]*\),\([^,]*\)$/.\1.\2/'
abc,def.12379.foo

Это оставит строки с одной запятой (напримерfoo,bar). Это может быть или не быть тем, что вы хотите.

\(...\)группы захвата и \1, \2обратные ссылки в строке замены должны поддерживаться во всех версиях sed; Я тестировал вышеописанное на Unix v7.

ПС. Даже двойной sed из вашего вопроса должен работать на MacOS; может быть, ваша проблема в том, что строки заканчиваются CarriageReturns вместо LineFeeds?

1
28.01.2020, 02:41

Теги

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