Если вы не знаете, что означает «перекомпилировать ядро» и «применить исправление», вам следует прочитать другие -связанные с Linux/Unix книги, в которых рассматриваются более общие темы, вместо того, чтобы тратить время на попытки получить знания из книга, посвященная разработке ядра Linux, например «Программирование модулей ядра Linux» Питера Джея Зальцмана.
Я предлагаю вам следующие книги (извините, если этот пост выглядит как AD )чтобы начать свое путешествие, чтобы получить знания о том, как работать с Unix -как ОС:
Здесь хорошо подходят как awk
, так и python
. Оба они поддерживают ассоциативные массивы (или словари ), и оба имеют встроенные регулярные выражения -.
Возможно, есть какой-то общий подход к ним, но я обычно оптимизирую, основываясь на фактических входных/выходных данных, с которыми я могу играть. Вот ваша проблема stat
решена с помощью awk
.
$ cat kv.awk
/File:/ {
f = $2
}
/Size:/ {
info[f] = $2
}
/Access.*Uid/ {
gsub(/\(|\/.*/, "", $2)
info[f] = info[f] OFS $2
}
END {
for (k in info) {
print "VerifyFile(\"" k "\"", info[k] ");"
}
}
Имя файла используется в качестве ключа , чтобы сохранить вместе все, что с ним связано. В конце вы можете отобразить результаты в любом нужном вам формате. GNU awk
также поддерживает многомерные массивы.
Вот пример запуска:
$ stat ip.txt test.txt > file.txt
$ awk -v OFS=', ' -f kv.awk file.txt
VerifyFile("'test.txt'", 254, 0664);
VerifyFile("'ip.txt'", 301, 0664);
Чтобы изучить awk
, я бы рекомендовал https://www.gnu.org/software/gawk/manual/gawk.html, который охватывает GNU awk
, а также упоминает подробности о других реализациях.