Как объединить текстовые файлы на основе столбца и удалить первую строку в linux?

Тем временем я обнаружил, что журнал аудита seccomp теперь находится в /var/log/audit/audit.log вместо syslog после Я установил auditd для получения инструмента ausyscall. Без инструмента журналы никуда не денутся.

Файл содержит строки типа

type=SECCOMP msg=audit(1444422928.758:649196): auid=0 uid=100033 gid=100033 ses=1 pid=18459 comm="nginx" exe="/usr/sbin/nginx" sig=31 arch=c000003e syscall=288 compat=0 ip=0x7f2f71555467 code=0x0

, в которых четко указано, какой процесс и какой системный вызов нарушили правила - это мне очень помогает.

Но я оставляю этот вопрос открытым. Есть еще вопросы, на которые нет ответа, и я все еще ищу более эффективный способ создания такого файла белого списка, чем попытка и ошибка.

1
22.04.2018, 19:05
1 ответ

Awk раствор:

awk 'BEGIN{ head = "Geneid" }
     FNR == 2{ 
         gsub(/^.+documents\/|\.sorted\.bam$/, "", $NF);
         head = head "\t" $NF 
     }
     FNR > 2{ 
         genes[$1] = genes[$1] "\t" $NF;
         order[FNR-2] = $1
     }
     END{ 
         print head; 
         for (i = 1; i <= FNR-2; i++) print order[i] genes[order[i]]
     }' file*.txt
  • FNR-номер считываемой записи
  • $NF-само значение последнего поля(NFуказывает на общее количество полей)
  • genes-массив, содержащий накопленную последовательность последних значений полей для гена id; массив индексируется по гену идентификаторам
  • order-вспомогательный массив, проиндексированный номерами записей для сохранения исходного порядка идентификаторов генов
1
27.01.2020, 23:43

Теги

Похожие вопросы