поиск строк с помощью 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 

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 

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

  • Найти все измененные файлы svn и скопировать файлы, измененные в одной структуре папок
  • Почему «grep». * «файл» работает и «grep. * файл« нет »?
  • Каков верный способ пожара найти все файлы и / или путь, содержащий 2 ключевых слова?
  • Как управлять файлом журнала с помощью grep или awk?
  • Какое регулярное выражение в grep ищет строки из трех одинаковых букв подряд?
  • cshell alias: как использовать вложенные одинарные кавычки (') в псевдониме cshell
  • Использование egrep для поиска совпадений в файле при выводе конвейера из команды cat
  • Как выбрать и вывести текст в строке
  • grep -Ef для захвата соответствующих ip-адресов в двух файлах, а также результат печати или эха каждой итерации, xx.xx.xx.xx found или xx.xx.xx.xx не найден
  • grep - распознать возврат каретки как новую строку
  • Как искать рекурсивно в нескольких уровнях встроенных tar tgz-файлов?
  • Linux и Unix - лучшая ОС в мире.