#linux #grep
Вопрос:
Как объединить следующие две команды grep,
echo $(pci -nd ${vendor_id1}: | grep -oc ${dev_id1})
echo $(pci -nd ${vendor_id1}: | grep -oc ${dev_id2})
до сих пор пробовал ниже, но не сработало,
echo $(pci -nd ${vendor_id1}: | grep -oc ${dev_id1}|${dev_id2})
echo $(pci -nd ${vendor_id1}: | grep -oc ${dev_id1}|${dev_id2})
Комментарии:
1. Похоже , вы хотите посчитать совпадения
$dev_id1
, и$dev_id2
, еслиecho $(pci -nd ${vendor_id1}: | grep -oc "${dev_id1}\|${dev_id2}"
это не сработает, попробуйтеecho $(pci -nd ${vendor_id1}: | grep -Eoc "${dev_id1}|${dev_id2}"
, иначе grep, который вы используете, сломан.2. Добро пожаловать в SO, пожалуйста, добавьте свои примеры ввода и ожидаемых результатов в свой вопрос, чтобы сделать его более понятным.
Ответ №1:
Вы можете использовать
echo $(pci -nd ${vendor_id1}: | grep -Eoc "${dev_id1}|${dev_id2}"
-E
опция позволяет использовать синтаксис POSIX ERE, который поддерживает unescaped |
в качестве оператора чередования.
Обратите внимание на двойные кавычки вокруг строки регулярного выражения, это позволяет расширять переменные.