Para o primeiro
$ awk '{print "me "$0 '"notme"} <<<"printme"
O que está acontecendo aqui é:
- A parte entre aspas simples é passada para
awkverbatim - A próxima parte
"notme"}é analisada pelo shell e depois passada paraawkcomo a string resultantenotme} -
awkconsegue ver isto:{print "me "$0 notme}Como o
awkvariablenotmenão tem valor, é isso que você obtém
Para o segundo
$ awk '{print "me "$0 '"\"$(date)"\"} <<<"printme-at " me printme-at Wed Apr 11 16:41:34 DST 2018
Eu estaria mais inclinado a escrevê-lo assim, usando uma variável awk para carregar o valor de $(date) :
awk -v date="$(date)" '{print "me "$0 date}' <<<"printme-at "
me printme-at Wed Apr 11 13:43:31 BST 2018
Você perguntou por que não há erro de sintaxe na sua versão deste. Vamos desmontar:
# typed at the shell
awk '{print "me "$0 '"\"$(date)"\"} <<<"printme-at "
# prepared for awk
awk '{print "me "$0 "Wed Apr 11 16:41:34 DST 2018"}' <<<"printme-at "
# seen by awk
{print "me "$0 "Wed Apr 11 16:41:34 DST 2018"}
A string com aspas duplas "\"$(date)\"" é analisada pelo shell antes de awk chegar perto dele e é avaliada (pelo shell) como algo como a string literal "Wed Apr 11 13:43:31 BST 2018" (incluindo as aspas duplas) . Não vejo por que precisa haver um erro de sintaxe, pois o que você escreveu é válido - embora um pouco tortuoso para ser lido.