Tags: awk

Как я перестал бояться и полюбил awk 3

Применение критического и системного подхода показали, что ранее использованное решение не является оптимальным. Что ж, обратно к анализу задачи.

Основная проблема - обновления ссылок, как имеющихся адресов, так и их состава. Правильным решением выбирается подсмотр в БД по 2 параметрам - названию фракции и названию отряда. Предполагается, что названия фракций совпадают, как и большинство названий отрядов - вокруг этого придётся плясать.

В первую очередь произведём проверку гипотезы:

awk -F\; '{
  if (NR < 2)
   next
  print $2
 }' profiles01-01-2017.csv | uniq

Роль утилиты uniq в сокращении повторов, которые не требуются. Критический осмотр получившегося списка приводит к выводу о том что схема может сработать.

В таком случае остаётся прибрать за собой, убрав ранее внесённые записи из файлов. Это производится единственной строкой:

find ./builder/games/wh40k -name '*.py' | xargs sed -i '/AUTO-INSERTED/ d'

Команда find обходит папки в поисках файлов с нужным расширением - на этот раз обрабатываются все файлы, поэтому grep не задействован. Имя каждого файла через xargs передаётся в команду sed для обработки на месте (обеспечено параметром -i). Все строчки, содержащие AUTO-INSERTED удаляются. Собственно, именно для этого AUTO-INSERTED и присутствовало в них.

Следует отметить, что при использовании параметра -i и параметра -n совместно результатом является полная очистка всех 500 с лишним файлов кода, что привело бы к катастрофе, не будь всё под системой контроля версий.

Как я перестал бояться и полюбил awk 1

Второго дня пришлось решать задачу, к которой раньше подступать не приходилось.

Дано:

  • Сотни, почти 800 питоновких классов которые систематически распределены по десяткам разных папок;
  • CSV-файл, в котором для каждого из классов прописана гиперссылка, которую требуется в класс добавить как поле.
Collapse )