Intereting Posts
Что требуется POSIX для цитирования здесь документов внутри подстановки команд? Изменение, где хранятся вновь созданные RPM Почему эти два варианта команд, которые похожи, дают разные результаты? Linux Minecraft Server закрывается, когда я выхожу из Putty? Зашифруйте раздел и разрешите qemu использовать его в качестве гостевого диска bash regex: звездочка дает неоднозначные результаты поиска с помощью grep Есть ли способ увеличить скорость поиска? emacs –demon crashing после закрытия emacsclient -c Непоследовательные однократные и двойные щелчки в файловом менеджере GNOME / GTK Как извлечь положительные числа в первом столбце из вывода, как в вопросе? vsftpd на Ubuntu не подчиняется разрешениям файловой системы Как разрешить директорию, чтобы пользователь мог перечислить содержимое, но не может их прочитать. Файлы «Ghost» в ext4? (ktorrent выделенное дисковое пространство) Как избежать метасимволов оболочки с помощью команды `find`? Лучший способ запустить службу как другого пользователя?

Проблема с 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 = "|"}'