Make, grep, sed и bash

Make

Очень большой мануал по make - тынц
Ещё один поменьше - тынц
Важно помнить, синтаксис в описании целей и пререквизитов отличается от синтаксиса команд!

Ключи вызова make:
-r - отключает встроенные проверки для различных с языков. так быстрее работает;
-k - продолжать работать, в случает если одна из целей поломалась;
-n - не выполнять реальных команд, а выводить их в виде текста. для отладки;
-d - debug-режим;
-j20 - выполнять в 20-и (обычно 10-30) потоках.

make -r -f Makefile_create all -k -j30 &>make.log

В Makefile:
SOME_VAR:=$(shell find txt_instructions/some_dir -type f -name '*.instr') - вызов команд BASH, в данном случае find
_CNT__ROUTES:=$(patsubst txt_instructions/_CNT_/%.instr,generated_routes/_CNT_/%.mp,$(SOME_VAR)) - а теперь замена (patsubst) путей из переменной (SOME_VAR), во всех найденных путях txt_instructions меняется на generated_routes.

Правила:

generated_routes/_CNT_/%.mp: txt_instructions/_CNT_/%.instr 
mkdir -p $(@D)
/home/filippov/programm_test -dumpBaseName generated_routes/_CNT_/$* -route `cat $<`
Здесь:
$(@D) - директория в которой должна появиться цель (generated_routes/_CNT_/%)
$* - то что в цели скрывается под %
$< - первая зависимость цели
$^ - все зависимости
$(word 2, $^) - вторая зависимость цели
$(word 3, $^) - третья зависимость цели и т.д.



grep

Про grep с примерами - тынц


sed

Маленький учебник по sed и awk - тут
Однострочники на sed - тут


bash

Основные команды - тут
Работа со строками в bash - здесь
Команды работы с текстом - тут
Введение в регулярные выражения - тут



Удаление дублей строк из файла без сортировки.
Утилита uniq удаляет дубли повторяющихся подряд строк, т.е. перед вызовом нужно вызвать sort. А можно и вот так:
awk '!x[$0]++' old_file > new_file







Комментарии

Популярные сообщения из этого блога

Apache2 и cgi-bin на Ubintu Server 12.04

Перемещаемые подписи в QGIS