Прежде всего, ls |
там совершенно бесполезны. Вы хотите искать внутри файла 9707le8.log
, а не в списке файлов и каталогов в вашем текущем каталоге (который выводит ls
). В любом случае grep
игнорирует любой переданный ему ввод ( | grep
), когда ему также дается имя файла для поиска в командной строке, как и у вас.
Тем не менее, ваше регулярное выражение означает «найдите строку 9139 =
, за которой следует <= 8 строчных букв». Однако после =
есть только 5 букв; 6-й символ - это _
и не входит в группу символов [a-z]
.Простое решение - добавить его в класс:
$ grep -Eo '9139=[a-z_]{0,8}' 9707le8.log
9139=eagle_fi
Теперь, поскольку вы хотите 9139 = eagle_fix11
, вам нужно увеличить количество символов:
$ grep -Eo '9139=[a-z_]{0,18}' 9707le8.log
9139=eagle_fix_trader
На этот раз проблема в том, что вы не совпадают с числами, поскольку [a-z _]
не включает их. Итак, вам нужно что-то вроде этого:
$ grep -Eo '9139=[a-z_0-9]{0,18}' 9707le8.log
9139=eagle_fix_trader11
Или, в более общем случае, где вы хотите 9139 =
строчными буквами или _
, а затем две цифры, вы можете использовать:
$ grep -Eo '9139=[a-z_]+[0-9]{2}' 9707le8.log
9139=eagle_fix_trader11
Или с GNU grep:
$ grep -Po '9139=[a-z_]+\d{2}' 9707le8.log
9139=eagle_fix_trader11
Переустановите два пакета, содержащие libprotobuf.so.8, libprotobuf-c.so.0
apt-get install --reinstall libprotobuf8 libprotobuf-c0
Если Ubuntu sudo apt-get install --reinstall libprotobuf8 libprotobuf-c0