每当我在bash shell脚本中使用awk时,我通常会这样做:
cat XXX | awk -f <(cat - <<'EOF'
# awk script here
EOF
)
但是,如果heredoc包含类似{2,}
的内容,那么大括号就会消失。这仅在使用bash进程替换<(...)
时发生。我怀疑它可能是大括号替换的一部分。例如:
cat <(cat - <<'EOF'
{3,}
EOF
)
打印
3
如果我用反斜杠逃脱,它会按原样打印。例如:
cat <(cat - <<'EOF'
\{3,\}
EOF
)
打印
\{3,\}
你能告诉我这个的原因,以及我如何在输出中得到{3,}
?
谢谢。
答案 0 :(得分:0)
我认为没有理由你输入这样的脚本。这似乎是无用的-f cat和here文件。您可以使用\
行继续
$ seq 10 | awk '/10/{print "double digit"} \
/8/{print "2 cube"} \
END{print done}'
2 cube
double digit