BASH: как Grep и отображает набор значений

В примере сообщения журнала мы имеем

20161110-15:29:39.707932513|8=FIX.4.29=031735=D34=00000389552=20161110-15:29:39.70749=413050=11156=DDG109=4130115=EAGLE7|EAGLE7116=eagle_fix_trader11|eagle_fix_trader11144=DAU|E7T9139=eagle_fix_trader119195=U439=805440=150854029208=221=1167=FUT55=14198040=259=054=111=41301110400144=0000035.0000000038=00000000760=20161110-15:29:39.70710=092 

из вышесказанного, как вы можете отображать только значение 9139, чтобы оно выглядело

 9139=eagle_fix_trader11 

Я использовал команду ниже

 ls | grep -Eo '9139=[az]{0,8}' 9707le8.log 

Но я только получаю

 9139=eagle 

вместо

 9139=eagle_fix_trader11 

Есть идеи?

One Solution collect form web for “BASH: как Grep и отображает набор значений”

Прежде всего, ls | это совершенно бесполезно. Вы хотите выполнить поиск внутри файла 9707le8.log , а не в списке файлов и 9707le8.log в вашем текущем каталоге (что и печатает ls ). В любом случае grep игнорирует любые входящие в него сообщения ( | grep ), когда ему также предоставляется имя файла для поиска в командной строке, как у вас.

Тем не менее, ваше регулярное выражение означает «найти строку 9139= , а затем <= 8 строчных букв». Однако после = 5 букв; 6-й символ – это _ и который не является частью группы символов [az] . Простое решение – добавить его в класс:

 $ 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 
  • Самый простой способ найти отсутствующую цитату в bash скрипт?
  • Сценарий манипулирования открытыми ключами SSH в файле authorized_keys
  • Как извлечь строки, начинающиеся с определенного письма?
  • Сценарий оболочки с трубами, не работающими в crontab
  • Возвращаемое значение команд при использовании stdin?
  • как сделать цикл с тестом md5sum на сценарии bash?
  • как написать `fuser -k -n tcp 80` в скрипт bash?
  • Скрипты многотомных (GNU) `tar` с заранее определенным количеством томов
  • wait bash-builtin сжигает CPU на 100 процентов
  • Как запустить сценарий оболочки из любого места
  • Сделать тайм-аут SSH быстрее при попытке доступа к недоступному серверу
  • awk, чтобы разграничить второй столбец
  • Linux и Unix - лучшая ОС в мире.