Intereting Posts
Мониторинг Perf Tool с помощью PID Каков правильный способ читать stdin внутри назначения скобок 2-го канала Как обновить сценарий инициализации Очень простой Linux для образовательных целей Использование sed для вставки латексных команд вокруг заголовков документа Почему vim возвращает ненулевой код выхода, если я выйду сразу после открытия? Предупреждение о записи во время ввода сообщения zsh Разделить страницы в pdf Как обрабатывать недоступные пакеты texlive на el7 Где отбрасывать библиотеки в соответствии со стандартом иерархии файловой системы Как фиксировать вывод хвоста -f с удаленного хоста на неопределенный срок Что может привести к тому, что не показывать что-то в пути? Являются ли {/ bin, / lib, / sbin} символическими ссылками в / usr в Ubuntu? Объем экспортируемой переменной в оболочке Как установить несколько значений в одну и ту же переменную в UNIX?

Проблема с grep, egrep в solaris

У меня проблема при выполнении этой команды в Solaris:

grep -Ev "(^#|^EBM_SERVER|^$)" ${EBM_CONF} | awk -F, '{print $2"|"}' | tr -d "\n" | sed 's/|$//g' 

Я получил сообщение об ошибке:

 egrep:illegal option -- E usage: egrep [-bchilnsv] [-e exp] [-f file] [string] [file] ... egrep:syntax error 

В Solaris, в среде по умолчанию, вы получаете устаревшие утилиты.

Чтобы получить более современные утилиты, вам необходимо обновить $PATH :

 PATH=`getconf PATH`:$PATH export PATH 

Это даст вам утилиты с 90-х годов, в отличие от 80-х (это вряд ли преувеличение …).

Тогда ваш grep будет вести себя как стандартный grep .

Кроме того, вы можете использовать egrep вместо grep -E .

Но здесь, awk являющийся надмножеством egrep , вам вообще не нужен egrep .

 < "$EBM_CONF" awk -F, '! /^#|^EBM_SERVER|^$/ {print $2"|"}' | tr -d "\n" | sed 's/|$//g' 

Присоединить линии с | , вам лучше использовать paste . Ваши последние две команды можно заменить paste -s -d '|' - paste -s -d '|' - . Или вы можете сделать все это в awk :

 < "$EBM_CONF" awk -F, '! /^#|^EBM_SERVER|^$/ {printf "%s", sep $2; sep = "|"}'