bash или awk - создание отчета из сложного набора данных - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть программа, которая генерирует большой файл данных, и я поместил небольшую выборку в раздел ввода. То, что я пытаюсь сделать, это начать с AOUT. Затем посмотрите на 4-й столбец, чтобы найти его следующее соединение, которое отображается во втором столбце где-то еще в файле, и повторяйте эти шаги, пока оно не закончится AIN в первом столбце. Количество соединений между AOUT и AIN варьируется от одного до десяти. Если в конце нет AIN, не должно быть никакого вывода. выход должен начинаться с AOUT и показывать каждое соединение, пока не достигнет AIN. Есть ли способ использовать awk или что-нибудь для создания желаемого результата?

вход (это небольшой раздел, их гораздо больше, и порядок их появления не является стандартным)

AOUT,03xx:LY0372A,LIC0372.OUT,LIC0372
PIDA,03xx:LIC0372,LT372_SEL.OUT,LT372_SEL
SIGSEL,03xx:LT372_SEL,LT1_0372.PNT,LT1_0372
AIN,03xx:LT1_0372

вывод:

03xx:LY0372A                
   =03xx:LT372_SEL.OUT         
   =03xx:LT1_0372.PNT         
   =03xx:LT1_0372              

формат вывода:

(AOUT)
  =(any number of jumps)
  =(any number of jumps))
  =(AIN)

1 Ответ

0 голосов
/ 08 апреля 2020

Если вы не предоставите больше информации и ответов на вопросы в комментариях выше, возможное решение в AWK может быть:

#!/bin/bash

awk -F',' '{
  if ($1 == "AOUT") {
    output = $2 "\n"
    connector = $4
    sub (":.*", "", $2)
    label = $2
  }
  else if ($1 == "AIN") {
    output = output "   =" $2
    print output
    output = ""
  } 
  else if (output != "") {
    if ($2 == label ":" connector) {
      output = output "   =" label ":" $3 "\n"
      connector = $4
    }
  }
}' input.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...