Este literal de string no awk
"echo \"select * from abc limit 1;\"| impala-shell|grep -Eo \" a-[0-9]-[0-9]* \| HS[0-9] \| [0-9]* \| [0-9]* \" "
representa o seguinte valor de string:
echo "select * from abc limit 1;"| impala-shell|grep -Eo " a-[0-9]-[0-9]* | HS[0-9] | [0-9]* | [0-9]* "
Barra invertida seguida por outro caractere que não é uma letra ou dígito representa esse dígito. (Pelo menos com a implementação histórica do awk e com o GNU awk - algumas implementações do awk deixam a barra invertida sozinha quando é seguida por um caractere como |
que o awk não considera especial.)
Quando você quiser que o awk emita a seqüência de caracteres \|
, você precisa proteger a barra invertida em uma string literal, então escreva '"\ |".
system("echo \"select * from abc limit 1;\"| impala-shell|grep -Eo \" a-[0-9]-[0-9]* \| HS[0-9] \| [0-9]* \| [0-9]* \""