поиск строк с помощью awk

У меня есть файл-1, у которого есть список идентификаторов транзакции.

Файл -1

201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|10.233.18.29.677220869928387637969 201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|11.233.18.29.677220869928387637969 201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|12.233.18.29.677220869928387637969 

У меня есть файл-2, в котором есть журналы. У него могут быть трубы в другом месте. Так что труба не может использоваться как разделитель

Файл-2

 logline-1|somefield fdfdsff dfwwtwtwt **201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|12.233.18.29.677220869928387637969** logline-2|somefield fdfdsff dfwwtwtwt **201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|12.233.18.29.677220869928387637969** logline-3|somefield fdfdsff dfwwtwtwt **201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|10.233.18.29.677220869928387637969** logline-4|somefield fdfdsff dfwwtwtwt **201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|10.233.18.29.677220869928387637969** logline-5|somefield fdfdsff dfwwtwtwt **201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|11.233.18.29.677220869928387637969** 

Как я могу использовать awk для чтения всего содержимого в файле-1 … grep в файле 2 и создать файл 3, который имеет (идентификатор транзакции – вхождения в файл 2)

Ожидаемый файл-3

 201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|10.233.18.29.677220869928387637969 2 201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|11.233.18.29.677220869928387637969 1 201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|12.233.18.29.677220869928387637969 2 

  • Почему «ключевое слово grep» заставляет терминал стоять вечно?
  • соответствие шаблону grep
  • Возвращайте только часть строки после соответствующего шаблона
  • Как фильтровать контент между определенными ключевыми словами с помощью grep?
  • Обратный grepping
  • sed / awk / grep найти строку между точкой с запятой
  • Измените текст в теге, но только тег содержится в определенном блоке XML
  • Grep для поиска шаблона в файле
  • One Solution collect form web for “поиск строк с помощью awk”

    Вы можете попробовать с awk:

     awk 'FNR == NR { v[$1] = 0; next; } { v[$4]++; } END { for (elem in v) { print elem, v[elem]; } }' File-1 File-2 >outfile 

    Таким образом, результат будет:

     201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|11.233.18.29.677220869928387637969 1 201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|12.233.18.29.677220869928387637969 2 201503301616|9b8791b3-f860-409f-aad0-24debf834c1b|10.233.18.29.677220869928387637969 2 

    Но опять же я не знаю, зачем вам 2 файла. Вы можете сделать это с помощью File-2:

     awk '{ v[$4]++; } END { for (elem in v) { print elem, v[elem]; } }' File-2 >outfile 

    Результат будет таким же.

    Interesting Posts

    могу ли я использовать папку udev для копирования моих файлов, чтобы я мог освободить свой / dev / sda1

    Могу ли я перенаправить весь трафик на порт на совершенно другой IP-адрес?

    Обновление Slackware 13.1 до Slackware-current, это большой скачок?

    Вставить различные файлы csv

    Соответствие n имени файла письма с ls

    Может ping, но не может сделать ssh

    Альтернатива не KDE для KNotes?

    Почему этот эхо-вызов перезаписывает существующий текст?

    Проблема регулярных выражений в Bash: , похоже, не работает

    Python.h: Нет такого файла или каталога

    Создание аудиозаписывающего устройства Linux на ПК под управлением Windows 7 по сети

    Получение двух полей из одной строки вместе

    Переменные, сконфигурированные в bashrc, все еще были предложены для экспорта

    Почему одно и то же sed regex (после grep) выходит из строя при запуске в сценарии bash или командной строке bash?

    Удалить часть пути из переменной содержимого

    Linux и Unix - лучшая ОС в мире.