使用大括号

时间:2016-03-24 10:42:27

标签: bash process substitution

每当我在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,}

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为没有理由你输入这样的脚本。这似乎是无用的-f cat和here文件。您可以使用\行继续

轻松输入多行就地脚本
$ seq 10 | awk '/10/{print "double digit"} \
                 /8/{print "2 cube"} \
                 END{print done}'
2 cube
double digit