Для общего экспорта добавьте эту строку в верхний make-файл
SHELL:=NODE_PATH=. ${SHELL}
где "УЗЕЛ _ПУТЬ=." пример var
Я использую это в этом примере проекта:
https://github.com/rzr/webthing-iotjs/blob/sandbox/rzr/node/master/Makefile#L24
По определениюRS='|'
является литералом |
. Любой одиночный символ RS рассматривается как литерал для переносимости между всеми awk, в противном случае у вас был бы сценарий с RS='|'
, который вел бы себя по-разному в gawk по сравнению с awk POSIX. Таким образом, односимвольный RS является литералом, в то время как строка с несколькими символами -в качестве RS является регулярным выражением, если версия awk поддерживает его, в противном случае это буквально просто первый символ строки (, поэтому RS='.'
всегда является литералом .
, а RS='.x'
— это любой char, за которым следует x
в некоторых awks и литерал .
в других ).
Между прочим, в любом другом контексте регулярных выражений одиночное |
является неопределенным поведением для POSIX, но многие инструменты будут рассматривать его как литерал |
, и то же самое касается символов повторения регулярных выражений, таких как *
и ?
.
Что касается RS='(|)'
-, это означает «null or null», что совпадает с «null», который вы могли бы альтернативно записать как ()
. Похоже, это подходит для всех персонажей, я не знаю, почему это не так. Различные инструменты, по-видимому, по-разному распознают это регулярное выражение :
$ printf 'foo\n' | sed -E 's/()/x/g'
xfxoxox
$ printf 'foo\n' | grep -Eo '()'
$
$ printf 'foo\n' | awk '{gsub(/()/,"x")} 1'
xfxoxox
$ printf 'foo\n' | awk -v RS='()' -v ORS='x\n' '1'
foox
Я связался с разработчиками GNU Awk (см.https://lists.gnu.org/archive/html/bug-gawk/2021-01/msg00003.html)и из этого получилось 2 вещи: