在寻找快速修剪文本字符串的方法时,我找到了以下维基页面:
在关于AWK的章节中,它提供了两组示例:
ltrim(v) = gsub(/^[ \t]+/, "", v)
rtrim(v) = gsub(/[ \t]+$/, "", v)
trim(v) = ltrim(v); rtrim(v)
或
function ltrim(s) { sub(/^[ \t]+/, "", s); return s }
function rtrim(s) { sub(/[ \t]+$/, "", s); return s }
function trim(s) { return rtrim(ltrim(s)); }
下面的例子是完全熟悉的并且工作正常,但是第一个例子看起来与我在20年的AWK编程中看到的任何东西都不同。它看起来像是在一行中定义和使用函数的一种非常有用的快速方法。我无法在GNU Awk 3.1.5中使用这种语法 - 所以它是在更新版本中引入的吗?
如果有人熟悉这种语法,我会感激一个真实的例子。
答案 0 :(得分:1)
我想这个例子是错的。 语法
identifier(parameter) = ...
不适用于我测试的所有变种: GNU awk (3,4,目前最新的), AT& T Bell的awk 和 mawk 。
就像调用未定义的函数一样,也会产生预期的错误。
也许作者只想用伪代码说明这个想法?
答案 1 :(得分:0)
我的理解是第一组示例没有定义函数,只是说明(缺少)ltrim(s)
函数可以被gsub(/^[ \t]+/, "", v)
等替换。