grep - игнорировать пустые значения [закрыто]

-1
05.03.2019, 07:17
4 ответа
pacmd list-modules |\
grep -B2 'argument: <[^>]' |\
grep -B1 -A1 'name: <module-cli-protocol-unix>'
  • Опция -Bпечатает строки перед совпадением, а также само совпадение
  • опция -Aпечатает строки после совпадения
  • если проблема с пробелами, их можно убрать с помощью sed, например

Таким образом, процесс:

  • список всех модулей
  • фильтр по не -нулевым аргументам
  • затем отфильтруйте правильное имя модуля
1
28.01.2020, 05:12

Будет неясно, пока вы не предоставите образец, но вы можете попробовать:

pacmd list-modules | grep -v 'argument: <>' | grep -e 'name: <module-cli-protocol-unix>'

Сначала он отклонит все строки с пустыми значениями для аргумента, а затем просканирует только те строки, которые имеют name: <module-cli-protocol-unix>.

0
28.01.2020, 05:12

Если вы считаете argument: <>пустым аргументом, это может сработать

pacmd list-modules | grep -B2 '^argument: <..*>' | grep -E '^(index|name|argument):'

Вывод образца:

index: 9
name: <module-cli-protocol-unix>
argument: <sink_name=module-cli_>
0
28.01.2020, 05:12

Пробовал с помощью приведенной ниже команды и работал нормально

команда

pacmd list-modules|awk '/index: [0-9]/||/name: <.*>/||/argument: <.*?>/{print $0}' 
-1
28.01.2020, 05:12

Теги

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