Bash awk是否支持使用与';不同的字符;印刷品?

Bash awk是否支持使用与';不同的字符;印刷品?,bash,awk,Bash,Awk,awk是否支持使用与“打印中”不同的分隔符?e、 g.代替awk'{print$1}',类似于awk-d#{print$1} 我实际上是在看C源代码,它是一个相当短的程序;是否有其他版本允许这样做?它不能:未将'传递给awk;相反,它是由shell本身理解的。因此,当您运行awk'{print$1}'时,您在操作系统级别实际调用的是: /* this is C syntax, so the double-quotes are C quotes; only their contents are l

awk是否支持使用与“打印中”不同的分隔符?e、 g.代替
awk'{print$1}'
,类似于
awk-d#{print$1}


我实际上是在看C源代码,它是一个相当短的程序;是否有其他版本允许这样做?

它不能:未将
'
传递给
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解析出来,当它理解为它应该如何把命令分解成一个参数列表时。

以另一种方式看,如果把脚本放在一个单独的文件中并称为

,请考虑一下。
awk -f my.awk
my.awk
的内容将是

{print $1}
不是


shell仅使用单引号来确保脚本按字面意思传递给
awk
,而不是接受任何特定的shell处理,这些处理可能会在
awk
读取脚本之前更改脚本。

您感到困惑。您发布的脚本中的
是脚本的shell分隔符。这与awk无关。如果你改变你的问题来解释你想做什么,而不是怎么做,那么我们可以帮助你。确保显示一个包括简明的、可测试的样本输入和预期输出。@AnthonyC,…顺便说一句,
awk
是一种完整的编程语言;它可以做很多事情,远远超过它惯用的愚蠢的“打印第n列”的目的,而且手头的语法没有任何特定的
print
。顺便说一句,因为你要问的是shell语法——shell调用的任何程序都无法更改调用它的shell解析其命令行的方式,因为在程序启动时,命令行解析已经完成。顺便说一句,如果您的目标是将包含文字引号的数据传递给
awk
,那么好的解决方案就有问题了(基本上,您希望将文字数据从代码带外传递;类似于
awk-v awkVar=“$shellVar”“…此处使用awkVar的awk代码…”
将使用
shellVar
的所有可能值,包括单引号、双引号、换行符等)。
'{print $1}'