Вы испачкали свои кавычки и синтаксис. Для установки разделителя поля ввода самый легкий способ сделать это с -F
опция на командной строке:
awk -F '[0-9]' '{ print $1 }'
или
awk -F '[[:digit:]]' '{ print $1 }'
Это использовало бы любую цифру в качестве разделителя поля ввода и затем произвело бы первое поле от каждой строки.
[0-9]
и [[:digit:]]
выражения являются не совсем тем же, в зависимости от Вашей локали. См. "Различие между [0-9], [[: цифра:]] и \d".
Можно было также установить FS
в awk
сама программа. Это обычно делается в a BEGIN
блок, поскольку это - одноразовая инициализация:
awk 'BEGIN { FS = "[0-9]" } { print $1 }'
Обратите внимание, что одинарные кавычки не могут использоваться в единственно заключенной в кавычки строке в оболочке, и что awk
строки всегда используют двойные кавычки.
Возможно, пробный прогон - то, что Вы ищете?
make --dry-run fred
Страница справочника дает нам это о пробном прогоне:
-n, --just-print, --dry-run, --recon
Print the commands that would be executed, but do not
execute them.
Таким образом, это не даст Вам прямой список, но косвенный список, так как Вы знаете, что он хотел бы выполнить то, от чего он зависит.
Другая возможность, хотя и дающая вам больше информации, чем вы хотите, - это опция "печатать базу данных". Из руководства:
‘-p’
‘--print-data-base’
Print the data base (rules and variable values) that results from reading the
makefiles; then execute as usual or as otherwise specified. This also prints the
version information given by the ‘-v’ switch (see below). To print the data base
without trying to remake any files, use ‘make -qp’. To print the data base of
predefined rules and variables, use ‘make -p -f /dev/null’. The data base output
contains file name and line number information for recipe and variable
definitions, so it can be a useful debugging tool in complex environments.
Справедливое предупреждение, однако: просеивание этого беспорядка будет жестоким без какой-либо пост-обработки.
.Допустим, ваш makefile это:
.phony: Уилма Барни Бетти
Фред: Уилма Барни Бетти
Последняя версия Reamake имеет опцию - профиль
- профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль - профиль . Формат вывода файла данных - это то, что использует CallGrind, поэтому другая программа необходима для создания графиков из вывода данных. Смотри https://github.com/rocky/remake/tree/master/profile
В более старой версии Remake, вот как вы можете получить зависимости, используя
$ remake -X -f Makefile GNU Make 4.1+dbg0.91 Built for x86_64-unknown-linux-gnu Copyright (C) 1988-2014 Free Software Foundation, Inc. Copyright (C) 2015 Rocky Bernstein. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Reading makefiles... Updating makefiles.... Updating goal targets.... File 'fred' does not exist. File 'wilma' does not exist. Must remake target 'wilma'. Successfully remade target file 'wilma'. <- (/tmp/??:0) wilma remake<0> target fred depend fred: wilma barney betty remake<1> quit remake: That's all, folks...
, если вы поставили эти команды, выданные в Файл, скажем CMDS.TXT
:
Цель Fred зависит
покидать
Тогда вы можете запустить:
CAT CMDS.TXT | Reamake -x -f makefile
Я ухожу как упражнение, как сделать что-то более уточнить, например, написание программы, которая принимает имя зависимости и запускается выше.