Из документации Gnuplot:
Подстановка командной строки задается системной командой, заключенной в кавычки. Эта команда
порождается, и вывод, который он производит, заменяет текст в кавычках в командной строке
источник: Документация GnuPlot 5.0
Так что это легко проверить в самом gnuplot:
gnuplot> `awk 'BEGIN{print "plot sin(x)"}'`
Если вы сейчас хотите использовать это с флагом -e
из командной строки, оно должно выглядеть примерно так:
$ gnuplot --persist -e "`awk 'BEGIN{print \"plot sin(x)\"}' ` "
Обратите внимание, что мы должны были избежать <двойных кавычек> внутри команды awk. Это связано с правилами цитирования bash. Если вы не хотите избегать двойных кавычек, вам придется использовать одинарные кавычки и снова избегать их. Это будет выглядеть так:
$ gnuplot --persist -e '`awk '"'"'BEGIN{print "plot sin(x)"}'"'"' ` '
Если вы используете awk
просто для генерации данных и хотите использовать систему конвейеров gnuplot:
В системах с функцией popen файл данных можно передать с помощью команды оболочки, запустив файл
имя с ’<’. Например, </p>
pop(x) = 103*exp(-x/10)
plot "< awk '{print $1-1965, $2}' population.dat", pop(x)
источник: документация GnuPlot 5.0
Таким образом, в случае OP, с надлежащим побегом, вы должны сделать:
$ gnuplot --persist -e "plot \"< awk '/matchpattern/{print \$4}' log.txt \""
обратите внимание, как мне также пришлось экранировать $
, иначе bash заменил бы его 4-м аргументом bash, который, скорее всего, является пустой строкой.