awk是否支持使用与'不同的字符?在打印?

时间:2017-04-25 15:56:14

标签: bash awk

awk是否支持使用与'不同的分隔符。在印刷?例如而不是awk '{print $1}',而不是awk -d # #{print $1}#

我实际上是在查看C源代码,它是一个非常短的程序;是否有允许的替代版本?

2 个答案:

答案 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处理