Intereting Posts
Должен ли я отключить учетную запись? Почему в загрузчике чаще всего написано на ассемблере? Как я могу получить приглашение имени пользователя на экране входа в Mint 16? Инициализировать подключенную USB-клавиатуру Как указать пакеты RPM, установленные в порядке установки Команда, которая выделяет регулярное выражение в тексте? создание хостов ssh глобально для всех пользователей на компьютере Печать содержимого между двумя строками, которые содержат escape-символы (Linux / Bash) Установка программного обеспечения в качестве пользователя переименование нескольких файлов приращения порядка Как создать Lynx с SSL на Mac OS X? Как подключить и выполнить передачу данных на мобильный с встроенной платы linux с помощью bluez? Является ли эта пропавшая ошибка зависимостей Python3 в Kazam Debian 8.5? «Текущее» окно терминала на команду shell / executable? Следите за временем ssh'd в рабочий компьютер для карты времени

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