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

Apr 01, 2017 00:18


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

Основная проблема - обновления ссылок, как имеющихся адресов, так и их состава. Правильным решением выбирается подсмотр в БД по 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 с лишним файлов кода, что привело бы к катастрофе, не будь всё под системой контроля версий.

find, awk, sed, чёрная магия

Previous post Next post
Up