awk是否支持使用与'不同的分隔符。在印刷?例如而不是awk '{print $1}'
,而不是awk -d # #{print $1}#
我实际上是在查看C源代码,它是一个非常短的程序;是否有允许的替代版本?
答案 0 :(得分:8)
它无法'
传递给awk
;相反,它由shell本身理解。因此,当您运行awk '{print $1}'
时,您在操作系统级别实际调用的内容类似于:
/* this is C syntax, so the double-quotes are C quotes; only their contents are literal */
execvp("awk", { "awk", "{print $1}", NUL });
值得注意的是,单引号根本就不存在 - 当shell将它们理解为如何将命令分解为参数列表时,它们被shell解析出来。
答案 1 :(得分:1)
要以另一种方式查看,请考虑将脚本放在单独的文件中并调用
awk -f my.awk
my.awk
的内容只是
{print $1}
不
'{print $1}'
单引号仅供shell使用,以确保脚本按字面顺序传递给awk
,而不是在awk
读取之前可能更改脚本的任何特定shell处理